Init Tizen 2.2.1 submit/tizen_2.2/20131107.113123
authorSehong Na <sehong.na@samsung.com>
Thu, 7 Nov 2013 11:31:04 +0000 (20:31 +0900)
committerSehong Na <sehong.na@samsung.com>
Thu, 7 Nov 2013 11:31:04 +0000 (20:31 +0900)
47 files changed:
CMakeLists.txt
inc/FWeb.h [changed mode: 0755->0644]
inc/FWebBookmarkItem.h [changed mode: 0755->0644]
inc/FWebControls.h [changed mode: 0755->0644]
inc/FWebCtrlAuthenticationChallenge.h [changed mode: 0755->0644]
inc/FWebCtrlGeolocationPermissionManager.h
inc/FWebCtrlHitElementResult.h [changed mode: 0755->0644]
inc/FWebCtrlIJavaScriptBridge.h [changed mode: 0755->0644]
inc/FWebCtrlILoadingListener.h [changed mode: 0755->0644]
inc/FWebCtrlITextSearchListener.h [changed mode: 0755->0644]
inc/FWebCtrlIWebDownloadListener.h [changed mode: 0755->0644]
inc/FWebCtrlIWebKeypadEventListener.h [changed mode: 0755->0644]
inc/FWebCtrlIWebUiEventListener.h [changed mode: 0755->0644]
inc/FWebCtrlIWebUiEventListenerF.h [changed mode: 0755->0644]
inc/FWebCtrlPageNavigationList.h [changed mode: 0755->0644]
inc/FWebCtrlWeb.h [changed mode: 0755->0644]
inc/FWebCtrlWebSetting.h [changed mode: 0755->0644]
inc/FWebCtrlWebStorageManager.h
inc/FWebHistoryItem.h [changed mode: 0755->0644]
inc/FWebWebBookmark.h [changed mode: 0755->0644]
inc/FWebWebHistory.h [changed mode: 0755->0644]
packaging/osp-web.spec
src/controls/FWebCtrl_AuthConfirmPopup.cpp
src/controls/FWebCtrl_CertificateConfirmPopup.cpp
src/controls/FWebCtrl_EflWebkit.cpp
src/controls/FWebCtrl_EflWebkit.h
src/controls/FWebCtrl_GeolocationPermissionManagerImpl.cpp
src/controls/FWebCtrl_GestureState.cpp
src/controls/FWebCtrl_GestureState.h
src/controls/FWebCtrl_InputPickerPopup.cpp
src/controls/FWebCtrl_InputPickerPopup.h
src/controls/FWebCtrl_PromptPopup.cpp
src/controls/FWebCtrl_SelectBox.cpp
src/controls/FWebCtrl_SelectBox.h
src/controls/FWebCtrl_UserConfirmPopup.cpp
src/controls/FWebCtrl_Web.cpp
src/controls/FWebCtrl_Web.h
src/controls/FWebCtrl_WebImpl.cpp
src/controls/FWebCtrl_WebManager.cpp
src/controls/FWebCtrl_WebManager.h
src/controls/FWebCtrl_WebNotification.cpp
src/controls/FWebCtrl_WebPopup.cpp
src/controls/FWebCtrl_WebSettingImpl.cpp
src/controls/inc/FWebCtrl_CertificateConfirmPopup.h
src/controls/inc/FWebCtrl_UserConfirmPopup.h
src/controls/inc/FWebCtrl_WebImpl.h
src/controls/inc/FWebCtrl_WebPopup.h

index edbe3ef..bceda8a 100755 (executable)
@@ -117,6 +117,7 @@ TARGET_LINK_LIBRARIES(${this_target} "-losp-image" )
 TARGET_LINK_LIBRARIES(${this_target} "-losp-media" )
 TARGET_LINK_LIBRARIES(${this_target} "-losp-net" )
 TARGET_LINK_LIBRARIES(${this_target} "-lecore" )
+TARGET_LINK_LIBRARIES(${this_target} "-lecore_x" )
 TARGET_LINK_LIBRARIES(${this_target} "-lecore_imf" ) 
 TARGET_LINK_LIBRARIES(${this_target} "-lecore_imf_evas" )
 TARGET_LINK_LIBRARIES(${this_target} "-lelementary" )
old mode 100755 (executable)
new mode 100644 (file)
old mode 100755 (executable)
new mode 100644 (file)
index f685e8a..3cb4e16
@@ -62,7 +62,7 @@ const RecordId ROOT_FOLDER_ID = -1;
 * @final               This class is not intended for extension.
 *
 * The %BookmarkItem class provides access to the WebBookmark class.
-* Each item contains the title, the URL of the page, the item type, and the parent folder ID.
+* Each item contains the title, the URL of a page, the item type, and the parent folder ID.
 */
 class _OSP_EXPORT_ BookmarkItem
        : public Tizen::Base::Object
@@ -76,7 +76,7 @@ public:
         *
         * @since               2.1
         *
-        * @param[in] rhs An instance of %BookmarkItem
+        * @param[in] rhs An instance of %BookmarkItem to copy
         */
        BookmarkItem(const BookmarkItem& rhs);
 
@@ -102,7 +102,7 @@ public:
         * @since               2.1
         *
         * @return              The URL of the current bookmark item @n
-        *                              If the item type is folder, this method will return an empty string.
+        *                              If the item type is folder, this method returns an empty string.
         * @see IsFolder()
         */
        Tizen::Base::String GetUrl(void) const;
@@ -114,9 +114,7 @@ public:
         *
         * @return              The image
         * @exception   E_SUCCESS       The method is successful.
-        * @exception   E_SYSTEM        Either of the following conditions has occurred: @n
-        *                                              - The method cannot proceed due to a severe system error. @n
-        *                                              - The method has failed because it does not work on a service application.
+        * @exception   E_SYSTEM        The method cannot proceed due to a severe system error.
         * @remarks     The specific error code can be accessed using the GetLastResult() method.
         */
        Tizen::Graphics::Bitmap* GetFaviconN(void) const;
@@ -127,7 +125,7 @@ public:
         * @since               2.1
         *
         * @return              The parent folder ID of the current bookmark item @n
-        *                              If the current bookmark item is the one in topmost level, this method will return ::ROOT_FOLDER_ID.
+        *                              If the current bookmark item is the one at the topmost level, this method returns ::ROOT_FOLDER_ID.
         */
        RecordId GetParentFolderId(void) const;
 
@@ -137,7 +135,7 @@ public:
         * @since               2.1
         *
         * @return              @c true if the type of the current bookmark item is folder, @n
-        *                                      else @c false
+        *                              else @c false
         */
        bool IsFolder(void) const;
 
@@ -156,7 +154,7 @@ public:
         * @since               2.1
         *
         * @return              @c true if the two instances match, or if and only if the two instances contain the same elements, @n
-        *                                      else @c false @n
+        *                              else @c false
         * @param[in]   obj                             The object to compare with the current instance
         * @see Tizen::Base::Object::Equals()
         */
@@ -167,7 +165,7 @@ public:
         *
         * @since               2.1
         *
-        * @param[in]   rhs                     The instance of the %BookmarkItem class to assign from
+        * @param[in]   rhs                     An instance of the %BookmarkItem class to assign
         */
        BookmarkItem& operator =(const BookmarkItem& rhs);
 
old mode 100755 (executable)
new mode 100644 (file)
index fc11bf0..f9618d5
@@ -47,8 +47,8 @@
  *  @remarks    @b Header @b %file: @b \#include @b <FWeb.h> @n
  *                             @b Library : @b osp-web
  *
- * The %Controls namespace allows you to embed the %Web browser as a control within an application, to upload and download content, and retrieve the HyperText Markup Language (HTML) element and history details.
- * @n
+ * The %Controls namespace allows you to embed the %Web browser as a control within an application, upload and download content, and retrieve the HyperText Markup Language (HTML) element and history details.
+ *
  * For more information on the %Controls namespace features, see <a href="../org.tizen.native.appprogramming/html/guide/web/controls_namespace.htm">Web Controls Guide</a>.
  *
  * The following diagram illustrates the relationships between the classes belonging to the %Controls namespace. 
old mode 100755 (executable)
new mode 100644 (file)
index e4a5b0f..5e44b08
@@ -35,7 +35,7 @@ namespace Tizen { namespace Web { namespace Controls
 /**
  *
  * @class      AuthenticationChallenge
- * @brief              This class handles the HyperText Transfer Protocol (HTTP) authentication requests.
+ * @brief      This class handles the HyperText Transfer Protocol (HTTP) authentication requests.
  *
  * @since              2.0
  *
@@ -61,11 +61,11 @@ public:
         * @privlevel           public
         * @privilege           %http://tizen.org/privilege/web.service
         *
-        * @param[in]           userId                  The user ID for authentication
-        * @param[in]           password                The password for authentication
-        * @exception           E_SUCCESS               The method is successful.
-        * @exception           E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception           E_USER_NOT_CONSENTED            The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]           userId                                          The user ID for authentication
+        * @param[in]           password                                        The password for authentication
+        * @exception           E_SUCCESS                                       The method is successful.
+        * @exception           E_PRIVILEGE_DENIED                      The application does not have the privilege to call this method.
+        * @exception           E_USER_NOT_CONSENTED            The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks     The specific error code can be accessed using the GetLastResult() method.
         */
        void Process(const UserId& userId, const Tizen::Base::String& password);
@@ -77,9 +77,9 @@ public:
         * @privlevel           public
         * @privilege           %http://tizen.org/privilege/web.service
         *
-        * @exception           E_SUCCESS               The method is successful.
-        * @exception           E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception           E_USER_NOT_CONSENTED            The user blocks an application from calling this method. @b Since: @b 2.1
+        * @exception           E_SUCCESS                                       The method is successful.
+        * @exception           E_PRIVILEGE_DENIED                      The application does not have the privilege to call this method.
+        * @exception           E_USER_NOT_CONSENTED            The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks     The specific error code can be accessed using the GetLastResult() method.
         */
        void Cancel(void);
index 2687bc8..89ab838 100755 (executable)
@@ -17,7 +17,6 @@
 /**\r
  * @file               FWebCtrlGeolocationPermissionManager.h\r
  * @brief              This is the header file for the %GeolocationPermissionManager class.\r
- * @privlevel          platform\r
  *\r
  * This header file contains the declarations of the %GeolocationPermissionManager class.\r
  *\r
@@ -44,8 +43,7 @@ class _GeolocationPermissionManagerImpl;
  *\r
  * @since              2.0\r
  *\r
- * The %GeolocationPermissionManager class provides methods to manage geolocation permissions decided by a user from origins using html5 JavaScript geolocation APIs.\r
- * @n\r
+ * The %GeolocationPermissionManager class provides methods to manage geolocation permissions decided by a user from origins using html5 JavaScript geolocation APIs. @n\r
  * Origin consists of the scheme, host, and port.\r
  */\r
 \r
@@ -61,10 +59,10 @@ public:
         * @privlevel           platform\r
         * @privilege   %http://tizen.org/privilege/geolocationpermission.read\r
         *\r
-        * @return      A pointer to Tizen::Base::Collection::IList containing origin(Tizen::Base::String) list, @n\r
+        * @return              A pointer to Tizen::Base::Collection::IList that contains the origin(Tizen::Base::String) list, @n\r
         *                              else @c null if no geolocation permission data exists\r
-        * @exception   E_SUCCESS               The method is successful.\r
-        * @exception   E_SYSTEM                The method cannot proceed due to a severe system error.\r
+        * @exception   E_SUCCESS                       The method is successful.\r
+        * @exception   E_SYSTEM                        The method cannot proceed due to a severe system error.\r
         * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.\r
         * @remarks     The specific error code can be accessed using the GetLastResult() method.\r
         */\r
@@ -78,8 +76,8 @@ public:
         * @privilege   %http://tizen.org/privilege/geolocationpermission.read\r
         *\r
         * @return              @c true if geolocation permission is allowed, @n\r
-        *                                      else @c false\r
-        * @param[in]   origin                  The origin\r
+        *                              else @c false\r
+        * @param[in]   origin                          The origin\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_DATA_NOT_FOUND        There is no permission data for the specified @c origin.\r
         * @exception   E_SYSTEM                        The method cannot proceed due to a severe system error.\r
@@ -96,7 +94,7 @@ public:
         * @privilege   %http://tizen.org/privilege/geolocationpermission.write\r
         *\r
         * @return              An error code\r
-        * @param[in]   origin                  The origin\r
+        * @param[in]   origin                          The origin\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_DATA_NOT_FOUND        There is no permission data for the specified @c origin.\r
         * @exception   E_SYSTEM                        The method cannot proceed due to a severe system error.\r
@@ -106,7 +104,7 @@ public:
        result Remove(const Tizen::Base::String& origin);\r
 \r
        /**\r
-        * Removes all elements in the list.\r
+        * Removes all the elements from the list.\r
         * \r
         * @since               2.0\r
         * @privlevel   platform\r
@@ -121,14 +119,14 @@ public:
        result RemoveAll(void);\r
 \r
        /**\r
-        * Gets the geolocation permission manager instance.\r
+        * Gets a geolocation permission manager instance.\r
         *\r
         * @since               2.0\r
         *\r
         * @return              A pointer to the %GeolocationPermissionManager instance, @n\r
-        *                                      else @c null if it fails\r
+        *                              else @c null if it fails\r
         * @exception   E_SUCCESS                       The method is successful.\r
-        * @exception   E_OUT_OF_MEMORY The memory is insufficient.\r
+        * @exception   E_OUT_OF_MEMORY         The memory is insufficient.\r
         * @exception   E_SYSTEM                        The method cannot proceed due to a severe system error.\r
         * @remarks             The specific error code can be accessed using the GetLastResult() method.\r
         */\r
old mode 100755 (executable)
new mode 100644 (file)
index ab907a1..0698376
@@ -47,7 +47,7 @@ namespace Tizen { namespace Web { namespace Controls
  *
  * @since      2.0
  *
- * The %HitElementResult class provides methods to retrieve information from the HTML element, such as tag name, attributes and content.
+ * The %HitElementResult class provides methods to retrieve information such as tag name, attributes and content from the HTML element.
  * @n
  * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/web/controls_namespace.htm">Web Controls Guide</a>.
  *
@@ -79,7 +79,7 @@ public:
         * @since               2.0
         *
         * @return      The value of the specified attribute
-        * @param[in]   attributeName                   The name of attribute
+        * @param[in]   attributeName                   The name of the attribute
         */
        Tizen::Base::String GetAttributeValue(const Tizen::Base::String& attributeName) const;
 
@@ -126,7 +126,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if there is a URL linked to the element, @n
-        *                                      else @c false
+        *                              else @c false
         */
        bool HasUrl(void) const;
 
old mode 100755 (executable)
new mode 100644 (file)
index 5651c75..9d30b61
@@ -36,11 +36,11 @@ namespace Tizen { namespace Web { namespace Controls
 
 /**
  * @interface  IJavaScriptBridge
- * @brief              This interface provides a communication channel between JavaScript and native object.
+ * @brief              This interface provides a communication channel between JavaScript and native object.
  *
  * @since              2.0
  *
- * The %IJavaScriptBridge interface provides a communication channel between JavaScript and native object.
+ * The %IJavaScriptBridge interface provides a communication channel between JavaScript and native object.
  *
  * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/web/controls_namespace.htm">Web Controls Guide</a>.
  *
@@ -49,14 +49,15 @@ class _OSP_EXPORT_ IJavaScriptBridge
 {
 public:
        /**
-       * 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.
+       * This polymorphic destructor should be overridden if required. @n
+       * This way, the destructors of the derived classes are called when the destructor of this interface is called.
        *
        * @since                        2.0
        */
        virtual ~IJavaScriptBridge(void) {}
 
        /**
-        * Called asynchronously on invocation request from JavaScript side through the requestToNative() method.
+        * Called asynchronously on an invocation request from JavaScript through the requestToNative() method.
         *
         * @since                       2.0
         *
old mode 100755 (executable)
new mode 100644 (file)
index caf32b7..3858f92
@@ -56,9 +56,9 @@ enum WebNavigationType
 {
        WEB_NAVIGATION_LINK_CLICKED,            /**< The clicking of a link on the page */
        WEB_NAVIGATION_FORM_SUBMITTED,          /**< The submission of a form */
-       WEB_NAVIGATION_BACKFORWARD,             /**< The back and forward navigation*/
+       WEB_NAVIGATION_BACKFORWARD,             /**< The back and forward navigation */
        WEB_NAVIGATION_RELOAD,                  /**< The reloading of the page */
-       WEB_NAVIGATION_FORM_RESUBMITTED,        /**< The resubmission of the form  */
+       WEB_NAVIGATION_FORM_RESUBMITTED,        /**< The resubmission of the form */
        WEB_NAVIGATION_OTHER                    /**< A navigation other than any of the above */
 };
 
@@ -71,16 +71,16 @@ enum WebNavigationType
  */
 enum LoadingErrorType
 {
-       WEB_ERROR_UNKNOWN,                          /**< An unknown error*/
-       WEB_REQUEST_TIMEOUT,                    /**< The request timeout */
+       WEB_ERROR_UNKNOWN,                          /**< An unknown error */
+       WEB_REQUEST_TIMEOUT,                            /**< The request timeout */
        WEB_NO_CONNECTION,                          /**< The network is not in service */
        WEB_MIME_NOT_SUPPORTED,                     /**< The content type is not supported */
        WEB_BAD_URL,                                /**< The URL is invalid */
-       WEB_HTTP_RESPONSE,                      /**< The hypertext transfer protocol (HTTP) response */
-       WEB_OUT_OF_MEMORY,                      /**< The memory is not enough to load the page */
-       WEB_FILE_ACCESS_FAILED,                 /**< The file access has failed */
-       WEB_REQUEST_MAX_EXCEEDED,               /**< The request has failed because the total number of requests have exceeded the maximum limit */
-       WEB_INVALID_CERTIFICATE                 /**< The hypertext transfer protocol secure (HTTPS) request has failed due to an invalid certificate or CA */
+       WEB_HTTP_RESPONSE,                              /**< The hypertext transfer protocol (HTTP) response */
+       WEB_OUT_OF_MEMORY,                              /**< The memory is not enough to load the page */
+       WEB_FILE_ACCESS_FAILED,                         /**< The file access has failed */
+       WEB_REQUEST_MAX_EXCEEDED,                       /**< The request has failed because the total number of requests have exceeded the maximum limit */
+       WEB_INVALID_CERTIFICATE                         /**< The hypertext transfer protocol secure (HTTPS) request has failed due to an invalid certificate or CA */
 };
 
 /**
@@ -92,9 +92,9 @@ enum LoadingErrorType
  */
 enum DecisionPolicy
 {
-       WEB_DECISION_DOWNLOAD,                          /**< The download policy*/
-       WEB_DECISION_CONTINUE,                          /**< The usage policy*/
-       WEB_DECISION_IGNORE,                                /**< The ignore policy*/
+       WEB_DECISION_DOWNLOAD,                          /**< The download policy */
+       WEB_DECISION_CONTINUE,                          /**< The usage policy */
+       WEB_DECISION_IGNORE,                            /**< The ignore policy */
 };
 
 /**
@@ -104,7 +104,7 @@ enum DecisionPolicy
  * @since      2.0
  *
  * The %ILoadingListener interface receives the events that occur during the loading of data.
- * To listen to the events occurred during a data loading operation, implement this listener. If there is no
+ * To listen to the events that occur during a data loading operation, implement this listener. If there is no
  * registered load event listener, the browser engine handles these events according to its own settings.
  * @n
  * For more information on the class features, see <a href="../org.tizen.native.appprogramming/html/guide/web/controls_namespace.htm">Web Controls Guide</a>.
@@ -114,7 +114,8 @@ class _OSP_EXPORT_ ILoadingListener
 {
 public:
        /**
-        * 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.
+        * This polymorphic destructor should be overridden if required. @n
+        * This way, the destructors of the derived classes are called when the destructor of this interface is called.
         *
         * @since               2.0
         */
@@ -128,8 +129,8 @@ public:
         * @return              @c true if the ownership is taken by the application, @n
         *                              else @c false, and a default dialog for the ID and password is displayed @n
         *                              If this method returns @c true, the application must delete the AuthenticationChallenge instance.
-        * @param[in]   host                    The host requiring the authentication
-        * @param[in]   realm                   The description to help save the user credentials for future visits
+        * @param[in]   host                            The host requiring the authentication
+        * @param[in]   realm                           The description to help save the user credentials for future visits
         * @param[in]   authentication          The handler to send a user response to the server that requested the authentication
         */
        virtual bool OnHttpAuthenticationRequestedN(const Tizen::Base::String& host, const Tizen::Base::String& realm, const Tizen::Web::Controls::AuthenticationChallenge& authentication) = 0;
@@ -160,11 +161,11 @@ public:
        *
        * @since        2.0
        *
-       * @param[in]            error                   The error that occurred during loading
+       * @param[in]            error                   The error that occurs during loading
        * @param[in]            reason                  The reason for the loading failure:
-       *                               - @c WEB_HTTP_RESPONSE: The HTTP state code such as "404"
-       *                               - @c WEB_MIME_NOT_SUPPORTED: The Multipurpose Internet Mail Extensions (MIME) type such as "application/rdf+xml" is not supported.
-       *                               - @c WEB_BAD_URL: The URL is incorrect.
+       *                                                                       - @c WEB_HTTP_RESPONSE: The HTTP state code such as "404"
+       *                                                                       - @c WEB_MIME_NOT_SUPPORTED: The Multipurpose Internet Mail Extensions (MIME) type such as "application/rdf+xml" is not supported.
+       *                                                                       - @c WEB_BAD_URL: The URL is incorrect.
        */
        virtual void OnLoadingErrorOccurred(LoadingErrorType error, const Tizen::Base::String& reason) = 0;
 
@@ -199,10 +200,10 @@ public:
         *
         * @since               2.0
         *
-        * @return              @c true if the application handles the URL after the request is canceled in the browser engine, @n
-        *                  else @c false if the browser engine proceeds with the requested URL
+        * @return              @c true if the application handles the URL after the request is cancelled in the browser engine, @n
+        *              else @c false if the browser engine proceeds with the requested URL
         * @param[in]   url                             The URL that is requested
-        * @param[in]   type                    The type indicating how the URL is triggered
+        * @param[in]   type                    The type that indicates how the URL is triggered
         */
        virtual bool OnLoadingRequested(const Tizen::Base::String& url, WebNavigationType type) = 0;
 
@@ -214,7 +215,7 @@ public:
         *
         * @since               2.0
         *
-        * @return                      A value of the enumerator DecisionPolicy
+        * @return              A value of the enumerator DecisionPolicy
         * @param[in]   mime                    The content type of the data that is downloaded
         * @param[in]   httpHeader              The HTTP header string
         */
@@ -222,7 +223,7 @@ public:
 
        /**
         * Called when the favicon of the new page is received. @n
-        * If this callback is received once, an application can get favicon by using Tizen::Web::Controls::Web::GetFaviconN().
+        * If this callback is received once, an application can get the favicon by using Tizen::Web::Controls::Web::GetFaviconN().
         *
         * @since               2.1
         *
old mode 100755 (executable)
new mode 100644 (file)
index 0799c79..2d0ba97
@@ -45,7 +45,8 @@ class _OSP_EXPORT_ ITextSearchListener
 public:
 
        /**
-        * 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.
+        * This polymorphic destructor should be overridden if required. @n
+        * This way, the destructors of the derived classes are called when the destructor of this interface is called.
         *
         * @since               2.0
         */
@@ -56,9 +57,9 @@ public:
         *
         * @since               2.0
         *
-        * @param[in]   totalCount              The total count of matches
-        * @param[in]   currentOrdinal  The ordinal of currently selected match @n
-        *                                                              If there is no match, it will be set to zero.
+        * @param[in]   totalCount              The total count of the matches
+        * @param[in]   currentOrdinal  The ordinal of the currently selected match @n
+        *                                                              If there is no match, it is set to zero.
         */
        virtual void OnTextFound(int totalCount, int currentOrdinal) = 0;
 
old mode 100755 (executable)
new mode 100644 (file)
index b5d48eb..163b615
@@ -96,7 +96,8 @@ class _OSP_EXPORT_ IWebDownloadListener
 {
 public:
        /**
-        * 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.
+        * This polymorphic destructor should be overridden if required. @n
+        * This way, the destructors of the derived classes are called when the destructor of this interface is called.
         *
         * @since               2.0
         */
@@ -120,11 +121,11 @@ public:
        virtual void OnWebDataDownloadCompleted(void) = 0;
 
        /**
-       * Called when an error has occurred while downloading content.
+       * Called when an error occurs while downloading content.
        *
        * @since                2.0
        *
-       * @param[in]    error                   The type of error that occurred while downloading data
+       * @param[in]    error                   The type of error that occurs while downloading data
        */
        virtual void OnWebDownloadFailed(LoadingErrorType error) = 0;
 
old mode 100755 (executable)
new mode 100644 (file)
index 02f9ad6..e7feba6
@@ -48,7 +48,8 @@ class _OSP_EXPORT_ IWebKeypadEventListener
 {
 public:
        /**
-        * 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.
+        * This polymorphic destructor should be overridden if required. @n
+        * This way, the destructors of the derived classes are called when the destructor of this interface is called.
         *
         * @since               2.0
         */
@@ -60,9 +61,6 @@ public:
         * @since               2.0
         *
         * @param[in]   source                  The source of the event
-        * @remarks             When the overlay keypad appears on the screen, the current Form's
-        *                      area is adjusted to account for the space that is taken up by the overlay keypad.
-        * @see Tizen::Ui::Controls::Form::GetClientAreaBounds()
         */
        virtual void OnWebKeypadWillOpen(Tizen::Web::Controls::Web& source) = 0;
 
@@ -73,7 +71,7 @@ public:
         *
         * @param[in]   source                  The source of the event
         * @remarks             When the overlay keypad appears on the screen, the current Form's
-        *                      area is adjusted to account for the space that is taken up by the overlay keypad.
+        *                          area is adjusted to account for the space that is taken up by the overlay keypad.
         * @see Tizen::Ui::Controls::Form::GetClientAreaBounds()
         */
        virtual void OnWebKeypadOpened(Tizen::Web::Controls::Web& source) = 0;
@@ -89,7 +87,7 @@ public:
        virtual void OnWebKeypadClosed(Tizen::Web::Controls::Web& source) = 0;
 
        /**
-        * Called when the keypad bounds are changed, for instance when the predictive text window which is located in the upper side of the keypad is shown.
+        * Called when the keypad bounds are changed, for instance when the predictive text window which is located in the upper part of the keypad is shown.
         *
         * @since               2.0
         *
old mode 100755 (executable)
new mode 100644 (file)
index 96725d0..34f3ba5
@@ -45,7 +45,8 @@ class _OSP_EXPORT_ IWebUiEventListener
 {
 public:
        /**
-        * 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.
+        * This polymorphic destructor should be overridden if required. @n
+        * This way, the destructors of the derived classes are called when the destructor of this interface is called.
         *
         * @since               2.0
         */
@@ -89,7 +90,7 @@ public:
         *
         * @since               2.0
         *
-        * @param[in]   source          The source of the event
+        * @param[in]   source                  The source of the event
         * @param[in]   startPoint              The starting point of the selected block
         * @param[in]   endPoint                The ending point of the selected block
         */
@@ -97,14 +98,14 @@ public:
 
        /**
         * Called just after the touch move event to determine whether the preventDefault() method is triggered or not. @n
-        * The application that wants to support W3C preventDefault() feature is recommended to use this callback and delay to handle the touch move event until this callback is received.
+        * The application that wants to support the W3C preventDefault() feature is recommended to use this callback and delay the handling of the touch move event until this callback is received.
         *
         * @since               2.1
         *
         * @param[in]   source          The source of the event
         * @param[in]   trigger         Set to @c true if the preventDefault() method is triggered, @n
-        *                                              else @c false
-        * @remarks                             This callback is always called just after the touch move event and returns @c true when preventDefault() is triggered on the touch start or touch move event.
+        *                                                  else @c false
+        * @remarks     This callback is always called just after the touch move event and returns @c true when preventDefault() is triggered on the touch start or touch move event.
         */
        virtual void OnWebPreventDefaultTriggered(Tizen::Web::Controls::Web& source, bool trigger) {};
 
old mode 100755 (executable)
new mode 100644 (file)
index 3dd03ef..219b94d
@@ -17,7 +17,7 @@
 \r
 /**\r
 * @file            FWebCtrlIWebUiEventListenerF.h\r
-* @brief                     This is the header file for the %IWebUiEventListenerF interface.\r
+* @brief           This is the header file for the %IWebUiEventListenerF interface.\r
 *\r
 * This header file contains the declarations of the %IWebUiEventListenerF interface.\r
 */\r
@@ -45,7 +45,8 @@ class _OSP_EXPORT_ IWebUiEventListenerF
 {\r
 public:\r
        /**\r
-        * 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.\r
+        * This polymorphic destructor should be overridden if required. @n\r
+        * This way, the destructors of the derived classes are called when the destructor of this interface is called.\r
         *\r
         * @since               2.1\r
         */\r
@@ -87,7 +88,7 @@ public:
         *\r
         * @since               2.1\r
         *\r
-        * @param[in]   source          The source of the event\r
+        * @param[in]   source                  The source of the event\r
         * @param[in]   startPoint              The starting point of the selected block\r
         * @param[in]   endPoint                The ending point of the selected block\r
         */\r
@@ -95,14 +96,14 @@ public:
 \r
        /**\r
         * Called just after the touch move event to determine whether the preventDefault() method is triggered or not. @n\r
-        * The application that wants to support W3C preventDefault() feature is recommended to use this callback and delay to handle the touch move event until this callback is received.\r
+        * The application that wants to support the W3C preventDefault() feature is recommended to use this callback and delay the handling of the touch move event until this callback is received.\r
         *\r
         * @since               2.1\r
         *\r
         * @param[in]   source          The source of the event\r
         * @param[in]   trigger         Set to @c true if the preventDefault() method is triggered, @n\r
-        *                                              else @c false\r
-        * @remarks                             This callback is always called just after the touch move event and returns @c true when preventDefault() is triggered on the touch start or touch move event.\r
+        *                                                      else @c false\r
+        * @remarks             This callback is always called just after the touch move event and returns @c true when preventDefault() is triggered on the touch start or touch move event.\r
         */\r
        virtual void OnWebPreventDefaultTriggered(Tizen::Web::Controls::Web& source, bool trigger) {};\r
 \r
old mode 100755 (executable)
new mode 100644 (file)
index 94c882a..34f3d5e
@@ -68,7 +68,7 @@ public:
         * @since               2.0
         *
         * @return              The current history item, @n
-        *                                      else @c null if no history item exists
+        *                              else @c null if no history item exists
         */
        const Tizen::Web::HistoryItem* GetCurrentItem(void) const;
 
@@ -78,25 +78,25 @@ public:
         * @since               2.0
         *
         * @return              The index of the currently viewed page in the web page navigation list, @n
-        *                                      else @c -1 if no history item exists
+        *                              else @c -1 if no history item exists
         */
        int GetCurrentIndex(void) const;
 
        /**
-        * Gets the history item pointed to by the specified @c index.
+        * Gets the history item that the specified @c index points to.
         *
         * @since               2.0
         *
         * @return              A pointer to the history item at the specified @c index
-        * @param[in]   index                   The index of an element @n
-        *                                                              The value of the index must be greater than or equal to @c 0.
-        * @exception   E_OUT_OF_RANGE          The specified @c index is out of range.
+        * @param[in]   index                           The index of the element @n
+        *                                                                      The value of the index must be greater than or equal to @c 0.
+        * @exception   E_OUT_OF_RANGE          The specified @c index is out of the valid range.
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        const Tizen::Web::HistoryItem* GetItemAt(int index) const;
 
        /**
-        * Gets the total number of the history items.
+        * Gets the total number of history items.
         *
         * @since               2.0
         *
old mode 100755 (executable)
new mode 100644 (file)
index e2ff11e..09420ce
@@ -121,7 +121,7 @@ WebSample::OnInitializing(void)
 void
 WebSample::LoadUrl(void)
 {
-    Tizen::Base::String url(L"http://www.tizen.org");
+    Tizen::Base::String url(L"http://www.tizen.org/about/");
 
     __pWeb->LoadUrl(url);
 }
@@ -183,7 +183,7 @@ WebSample::OnInitializing(void)
 void
 WebSample::LoadUrl(void)
 {
-    Tizen::Base::String url(L"http://www.tizen.org");
+    Tizen::Base::String url(L"http://www.tizen.org/about/");
 
     __pWeb->LoadUrl(url);
 }
@@ -216,12 +216,12 @@ public:
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @param[in]   rect                    The rectangle size of the control
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_SYSTEM                        The method has failed.
-        * @exception   E_INVALID_ARG           The specified @c rect is invalid.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   rect                                    The rectangle size of the control
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_SYSTEM                                The method has failed.
+        * @exception   E_INVALID_ARG                   The specified @c rect is invalid.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         */
        result Construct(const Tizen::Graphics::Rectangle& rect);
 
@@ -233,12 +233,12 @@ public:
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @param[in]   rect                    The rectangle size of the control
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_SYSTEM                        The method has failed.
-        * @exception   E_INVALID_ARG           The specified @c rect is invalid.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method.
+        * @param[in]   rect                                    The rectangle size of the control
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_SYSTEM                                The method has failed.
+        * @exception   E_INVALID_ARG                   The specified @c rect is invalid.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method.
         */
        result Construct(const Tizen::Graphics::FloatRectangle& rect);
 
@@ -249,47 +249,47 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   url                             The resource to load
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   url                                             The resource to load
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void LoadUrl(const Tizen::Base::String& url);
 
        /**
-        * Loads the resource specified by the URL with a given header of HTTP request.
+        * Loads the resource specified by the URL along with the given header of the HTTP request.
         *
         * @since               2.0
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @param[in]   url                             The resource to load
-        * @param[in]   header                  The header of the HTTP request
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_INVALID_HEADER        The header object does not contain any header fields.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   url                                             The resource to load
+        * @param[in]   header                                  The header of the HTTP request
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_INVALID_HEADER                The header object does not contain any header fields.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         */
        result LoadUrl(const Tizen::Base::String& url, const Tizen::Net::Http::HttpHeader& header);
 
        /**
-        * Loads the resource specified by the URL with a given header and body of HTTP request. @n
-        * The header must include content-type entity-header field that is needed to check mime-type of the message body.
+        * Loads the resource specified by the URL along with the given header and body of the HTTP request. @n
+        * The header must include the content-type entity-header field that is needed to check the mime-type of the message body.
         *
         * @since               2.0
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @param[in]   url                             The resource to load
-        * @param[in]   header                  The header of the HTTP request
-        * @param[in]   body                    The message body of the HTTP request
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_INVALID_HEADER        The header object does not contain any header fields.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   url                                             The resource to load
+        * @param[in]   header                                  The header of the HTTP request
+        * @param[in]   body                                    The message body of the HTTP request
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_INVALID_HEADER                The header object does not contain any header fields.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         */
        result LoadUrlWithPostRequest(const Tizen::Base::String& url, const Tizen::Net::Http::HttpHeader& header, const Tizen::Base::ByteBuffer& body);
 
@@ -300,14 +300,14 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   baseUrl                 The uniform resource locator (URL) of the content
-        * @param[in]   content                 The content
-        * @param[in]   mime                    The MIME type of the content
-        * @param[in]   encoding                The <a href= "../org.tizen.native.appprogramming/html/guide/web/supported_web_features.htm">text encoding</a> of the content
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_INVALID_ARG           The content buffer is empty. @b Since: @b 2.1
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   baseUrl                                 The uniform resource locator (URL) of the content
+        * @param[in]   content                                 The content
+        * @param[in]   mime                                    The MIME type of the content
+        * @param[in]   encoding                                The <a href= "../org.tizen.native.appprogramming/html/guide/web/supported_web_features.htm">text encoding</a> of the content
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_INVALID_ARG                   The content buffer is empty. @b Since: @b 2.1
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void LoadData(const Tizen::Base::String& baseUrl, const Tizen::Base::ByteBuffer& content, const Tizen::Base::String& mime, const Tizen::Base::String& encoding = "UTF-8");
@@ -319,9 +319,9 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void StopLoading(void);
@@ -333,9 +333,9 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void Reload(void);
@@ -345,8 +345,8 @@ public:
         *
         * @since               2.0
         *
-        * @return              @c true if a page is loading, @n
-        *                                      else @c false
+        * @return              @c true if the page is loading, @n
+        *                              else @c false
         */
        bool IsLoading(void) const;
 
@@ -356,7 +356,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if a back history item exists, @n
-        *                                      else @c false
+        *                              else @c false
         */
        bool CanGoBack(void) const;
 
@@ -366,7 +366,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if a forward history item exists, @n
-        *                                      else @c false
+        *                              else @c false
         */
        bool CanGoForward(void) const;
 
@@ -377,9 +377,9 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void GoBack(void);
@@ -391,9 +391,9 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void GoForward(void);
@@ -403,7 +403,7 @@ public:
         *
         * @since               2.0
         *
-        * @return              A pointer to PageNavigationList containing the history items of the %Web control
+        * @return              A pointer to PageNavigationList that contains the history items of the %Web control
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_SYSTEM                        The method cannot proceed due to a severe system error.
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
@@ -418,10 +418,10 @@ public:
         * @since               2.0
         *
         * @return              @c true if the specified @c word is found, @n
-        *                                      else @c false
+        *                              else @c false
         * @param[in]   word                    The string to search for
         * @param[in]   searchForward   Set to @c true to search for the word in the forward direction from the current position, @n
-        *                                                                      else @c false to search for the word in the backward direction from the current position
+        *                                                              else @c false to search for the word in the backward direction from the current position
         */
        bool SearchText(const Tizen::Base::String& word, bool searchForward = true);
 
@@ -434,10 +434,10 @@ public:
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @param[in]   setting                 The setting to update
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   setting                                 The setting to update
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         */
        result SetSetting(const Tizen::Web::Controls::WebSetting& setting);
 
@@ -457,11 +457,11 @@ public:
         * @since               2.0
         *
         * @return              A HitElementResult of the pointed element
-        * @param[in]   point                   The x and y coordinates
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_INVALID_ARG           The specified @c point is invalid.
+        * @param[in]   point                                   The x and y coordinates
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_INVALID_ARG                   The specified @c point is invalid.
         * @exception   E_UNSUPPORTED_FORMAT    The image format is not supported.
-        * @exception   E_SYSTEM                        The method cannot proceed due to a severe system error.
+        * @exception   E_SYSTEM                                The method cannot proceed due to a severe system error.
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        Tizen::Web::Controls::HitElementResult* GetElementByPointN(const Tizen::Graphics::Point& point) const;
@@ -472,11 +472,11 @@ public:
         * @since               2.1
         *
         * @return              A HitElementResult of the pointed element
-        * @param[in]   point                   The x and y coordinates
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_INVALID_ARG           The specified @c point is invalid.
+        * @param[in]   point                                   The x and y coordinates
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_INVALID_ARG                   The specified @c point is invalid.
         * @exception   E_UNSUPPORTED_FORMAT    The image format is not supported.
-        * @exception   E_SYSTEM                        The method cannot proceed due to a severe system error.
+        * @exception   E_SYSTEM                                The method cannot proceed due to a severe system error.
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        Tizen::Web::Controls::HitElementResult* GetElementByPointN(const Tizen::Graphics::FloatPoint& point) const;
@@ -489,11 +489,11 @@ public:
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              The result of the evaluated JavaScript, @n
-        *                                      else @c null if an error occurs
-        * @param[in]   scriptCode              The JavaScript code as string
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        *                              else @c null if an error occurs
+        * @param[in]   scriptCode                              The JavaScript code as a string
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        Tizen::Base::String* EvaluateJavascriptN(const Tizen::Base::String& scriptCode);
@@ -504,12 +504,12 @@ public:
         * @since               2.0
         *
         * @return              An error code
-        * @param[in]   level                   The zoom-out level @n
-        *                                                              The value ranges between @c 0.3 and @c 2.0. When the page view is at its original size, the level is @c 1.0. @n If the
-        *                                                              specified level is less than @c 1.0, the page view is reduced. @n If the specified level is greater than @c 1.0, the page view is
-        *                                                              magnified.
+        * @param[in]   level                           The zoom-out level @n
+        *                                                                      The value lies between the range @c 0.3 and @c 2.0. When the page view is at its original size, the level is @c 1.0. @n If the
+        *                                                                      specified level is less than @c 1.0, the page view is reduced. @n If the specified level is greater than @c 1.0, the page view is
+        *                                                                      magnified.
         * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_OUT_OF_RANGE          The specified @c level is less than @c 0.3 or greater than @c 2.0.
+        * @exception   E_OUT_OF_RANGE          The specified @c level is either less than @c 0.3 or greater than @c 2.0.
         */
        result SetZoomLevel(float level);
 
@@ -518,7 +518,7 @@ public:
         *
         * @since               2.0
         *
-        * @return              The value ranges between @c 0.3 and @c 2.0
+        * @return              The value lies between the range @c 0.3 and @c 2.0
         */
        float GetZoomLevel(void) const;
 
@@ -546,7 +546,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if the specified MIME type is supported, @n
-        *                                      else @c false
+        *                              else @c false
         * @param[in]   mime                    The MIME type
         */
        bool IsMimeSupported(const Tizen::Base::String& mime) const;
@@ -558,10 +558,10 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   pLoadingListener        The listener receives the events that occurs while loading the data
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   pLoadingListener                The listener receives the events that occur while loading the data
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void SetLoadingListener(Tizen::Web::Controls::ILoadingListener* pLoadingListener);
@@ -573,10 +573,10 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   pDownLoadListener       The listener to receive the data from a network incrementally
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   pDownLoadListener               The listener to receive the data from a network incrementally
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void SetDownloadListener(Tizen::Web::Controls::IWebDownloadListener* pDownLoadListener);
@@ -588,7 +588,7 @@ public:
         * @since               2.0
         *
         * @return              An error code
-        * @param[in]   startPoint              The starting point for the text selection block
+        * @param[in]   startPoint                      The starting point for the text selection block
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_INVALID_ARG           There is nothing to select from the specified starting point.
         */
@@ -601,7 +601,7 @@ public:
         * @since               2.1
         *
         * @return              An error code
-        * @param[in]   startPoint              The starting point for the text selection block
+        * @param[in]   startPoint                      The starting point for the text selection block
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_INVALID_ARG           There is nothing to select from the specified starting point.
         */
@@ -625,8 +625,8 @@ public:
         * @since               2.0
         *
         * @return              An error code
-        * @param[out]  startPoint              The starting point of the selected text block
-        * @param[out]  endPoint                The ending point of the selected text block
+        * @param[out]  startPoint                      The starting point of the selected text block
+        * @param[out]  endPoint                        The ending point of the selected text block
         * @exception   E_SUCCESS                       The method is successful.
         */
        result GetBlockRange(Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint) const;
@@ -638,8 +638,8 @@ public:
         * @since               2.1
         *
         * @return              An error code
-        * @param[out]  startPoint              The starting point of the selected text block
-        * @param[out]  endPoint                The ending point of the selected text block
+        * @param[out]  startPoint                      The starting point of the selected text block
+        * @param[out]  endPoint                        The ending point of the selected text block
         * @exception   E_SUCCESS                       The method is successful.
         */
        result GetBlockRange(Tizen::Graphics::FloatPoint& startPoint, Tizen::Graphics::FloatPoint& endPoint) const;
@@ -651,7 +651,7 @@ public:
         * @since               2.0
         *
         * @return              The selected text, @n
-        *                                      else an empty string if there is no selection block
+        *                              else an empty string if there is no selection block
         */
        Tizen::Base::String GetTextFromBlock(void) const;
 
@@ -660,10 +660,10 @@ public:
         *
         * @since               2.0
         *
-        * @param[in]   enable                  Set to @c true to enable the scrolling of the web page, @n
+        * @param[in]   enable                          Set to @c true to enable the scrolling of the web page, @n
         *                                                                      else @c false
         * @exception   E_SUCCESS                       The method is successful.
-        * @remarks             This method does not affect javascript touch event.
+        * @remarks             This method does not affect the JavaScript touch event.
         */
        result SetScrollEnabled(bool enable);
 
@@ -674,7 +674,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if the web page scroll is enabled, @n
-        *                                      else @c false
+        *                              else @c false
         */
        bool IsScrollEnabled(void) const;
 
@@ -702,7 +702,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if private browsing is enabled, @n
-        *                      else @c false
+        *              else @c false
         */
        bool IsPrivateBrowsingEnabled(void) const;
 
@@ -714,11 +714,11 @@ public:
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              The result of setting the private browsing
-        * @param[in]   enable                  Set to @c true to enable private browsing, @n
-        *                                                                      else @c false
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   enable                                  Set to @c true to enable private browsing, @n
+        *                                                                              else @c false
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         */
        result SetPrivateBrowsingEnabled(bool enable);
 
@@ -730,9 +730,9 @@ public:
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method.
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method.
         * @see CanGoBack()
         * @see CanGoForward()
         * @see GoBack()
@@ -748,9 +748,9 @@ public:
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         */
        result ClearCache(void);
 
@@ -762,48 +762,47 @@ public:
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         */
        result ClearCookie(void);
 
        /**
-        * Clears the application's all stored form datas.
+        * Clears the application's all stored form data.
         *
         * @since               2.1
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method.
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method.
         */
        result ClearFormData(void);
 
        /**
-        * Clears the application's all stored ID/password datas.
+        * Clears the application's all stored ID/password data.
         *
         * @since               2.1
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
         * @return              An error code
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method.
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method.
        */
        result ClearLoginFormData(void);
 
        /**
-        * Checks whether the %Web control allows cookie. @n
-        * Returns @c true if cookie is enabled.
+        * Checks whether the %Web control allows cookies. @n
         *
         * @since               2.0
         *
-        * @return              @c true if cookie is allowed, @n
-        *                                      else @c false
+        * @return              @c true if the cookie is allowed, @n
+        *                              else @c false
         */
        bool IsCookieEnabled(void) const;
 
@@ -814,24 +813,25 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @return              The result of enabling or disabling cookie
-        * @param[in]   enable                  Set to @c true if the web control allows a cookie, @n
-        *                                                                      else @c false
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @return              The result of enabling or disabling cookie
+        * @param[in]   enable                                  Set to @c true if the web control allows a cookie, @n
+        *                                                                              else @c false
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         */
        result SetCookieEnabled(bool enable);
 
        /**
-        * Saves the current web page as a pdf file. @n The size parameter is used to set size of the pdf file using millimeter.
+        * Saves the current web page as a pdf file. @n 
+        * The size parameter is used to set the size of a pdf file using millimeters.
         *
         * @since               2.0
         *
         * @return              An error code
-        * @param[in]   filePath                The path of the pdf file that is created
-        * @param[in]   pSize                   The width and height of the pdf file in millimeter. The width and height must be greater than @c 0. @n
-        *                                                              If the parameter contains @c null, the method uses the default size of the web page that is shown on the screen.
+        * @param[in]   filePath                        The path of the pdf file that is created
+        * @param[in]   pSize                           The width and height of the pdf file in millimeters. The width and height must be greater than @c 0. @n
+        *                                                                      If the parameter contains @c null, the method uses the default size of the web page that is shown on the screen.
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_INVALID_ARG           Either of the following conditions has occurred: @n
         *                                                                              - The specified path is invalid.
@@ -846,7 +846,7 @@ public:
         * @since               2.0
         *
         * @return              An error code
-        * @param[in]   jsBridge                The JavaScript bridge to add
+        * @param[in]   jsBridge                        The JavaScript bridge to add
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_OBJ_ALREADY_EXIST     A JavaScript bridge with the same name already exists.
         */
@@ -858,15 +858,15 @@ public:
         * @since               2.0
         *
         * @return              An error code
-        * @param[in]   jsBridge                The JavaScript bridge to remove
+        * @param[in]   jsBridge                        The JavaScript bridge to remove
         * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_OBJ_NOT_FOUND The specified element is not found.
+        * @exception   E_OBJ_NOT_FOUND         The specified element is not found.
         */
        result RemoveJavaScriptBridge(const IJavaScriptBridge& jsBridge);
 
        /**
         * Registers a keypad event listener. @n
-        * The registered listener is notified when the keypad associated with <input> tag or with <textarea> tag is opened or closed.
+        * The registered listener is notified when the keypad associated with <input> tag or <textarea> tag is opened or closed.
         *
         * @since               2.0
         *
@@ -877,15 +877,15 @@ public:
        void SetWebKeypadEventListener(IWebKeypadEventListener* pKeypadEventListener);
 
        /**
-        * Searches for all instances of the text on the current page and then highlights them. @n
-        * The current matched block will indicate the first match.
+        * Searches for all the instances of the text on the current page and then highlights them. @n
+        * The current matched block indicates the first match.
         *
         * @since               2.0
         *
         * @return              An error code
-        * @param[in]   text                    The string to search for
-        * @param[in]   caseSensitive   Set to @c true to search for the text with case-sensitive mode, @n
-        *                                                              else @c false to search for the text in the backward direction from the current position
+        * @param[in]   text                            The string to search for
+        * @param[in]   caseSensitive           Set to @c true to search for the text in the case-sensitive mode, @n
+        *                                                                      else @c false to search for the text in the backward direction from the current position
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_INVALID_ARG           The specified @c text is invalid.
         * @remarks             This method operates asynchronously.
@@ -899,9 +899,9 @@ public:
         * @since               2.0
         *
         * @return              An error code
-        * @param[in]   searchForward   Set to @c true to search for the text in the forward direction from the current position, @n
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_OBJ_NOT_FOUND         The next instance is not found.
+        * @param[in]   searchForward                   Set to @c true to search for the text in the forward direction from the current position, @n
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_OBJ_NOT_FOUND                 The next instance is not found.
         * @exception   E_INVALID_OPERATION             The SearchTextAllAsync() method is not called.
         * @remarks             This method operates asynchronously.
         * @see Tizen::Web::Controls::ITextSearchListener::OnTextFound()
@@ -918,7 +918,7 @@ public:
        void SetTextSearchListener(ITextSearchListener* pTextSearchListener);
 
        /**
-        * Gets the favicon image from current page.
+        * Gets the favicon image from the current page.
         *       
         * @since               2.0
         *
@@ -936,7 +936,7 @@ public:
        void    Pause(void);
 
        /**
-        * Informs the browser engine to resume the handling of screen operations. 
+        * Informs the browser engine to resume the handling of the screen operations. 
         *
         * @since               2.0
         */
@@ -974,8 +974,8 @@ public:
         *
         * @since               2.1
         *
-        * @return      The size of the current web page
-        * @remarks             If an application want to get the displayed size, the return value should be multiplied by the zoom factor.
+        * @return              The size of the current web page
+        * @remarks             If an application wants to get the displayed size, the return value should be multiplied by the zoom factor.
         * @see GetZoomLevel()
         */
        Tizen::Graphics::Dimension GetPageSize(void) const;
old mode 100755 (executable)
new mode 100644 (file)
index b4e3528..8ca8e07
@@ -59,8 +59,8 @@ enum CacheMode
 enum CertificateErrorHandlingMode
 {
        WEB_CERTIFICATE_ERROR_HANDLING_MODE_USER_CONFIRM,            /**< The web certificate error handling mode: The confirm popup is displayed to get the user confirmation */
-       WEB_CERTIFICATE_ERROR_HANDLING_MODE_CANCEL,                 /**< The web certificate error handling mode: The confirm popup is not displayed and the request is canceled */
-       WEB_CERTIFICATE_ERROR_HANDLING_MODE_CONTINUE                    /**< The web certificate error handling mode: The confirm popup is not displayed and the request proceeds */
+       WEB_CERTIFICATE_ERROR_HANDLING_MODE_CANCEL,                  /**< The web certificate error handling mode: The confirm popup is not displayed and the request is cancelled */
+       WEB_CERTIFICATE_ERROR_HANDLING_MODE_CONTINUE                 /**< The web certificate error handling mode: The confirm popup is not displayed and the request proceeds */
 };
 
 /**
@@ -107,10 +107,10 @@ public:
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   mode                    A cache mode
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   mode                                    The cache mode
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void SetCacheControl(CacheMode mode);
@@ -139,7 +139,7 @@ public:
         * @since               2.0
         *
         * @param[in]   enable                  Set to @c true if the %Web control uses JavaScript, @n
-        *                                                                      else @c false
+        *                                                              else @c false
         */
        void SetJavascriptEnabled(bool enable);
 
@@ -148,8 +148,8 @@ public:
         *
         * @since               2.0
         *
-        * @param[in]   enable                  Set to @c true if the %Web control must load images included in the content, @n
-        *                                                                      else @c false
+        * @param[in]   enable                  Set to @c true if the %Web control loads images included in the content, @n
+        *                                                              else @c false
         */
        void SetAutoImageLoadEnabled(bool enable);
 
@@ -158,7 +158,7 @@ public:
         *
         * @since               2.0
         *
-        * @param[in]   inputStyle              The input style of keypad
+        * @param[in]   inputStyle              The input style of the keypad
         * @remarks             If an application sets the input style to @c INPUT_STYLE_OVERLAY, the application must implement IWebKeypadEventListener to rearrange the layout of the current Form.
         *
         */
@@ -176,7 +176,7 @@ public:
 
        /**
         * Gets the font size of the content. @n
-        * The default size is @c 17.
+        * The default size is @c 16.
         *
         * @since               2.0
         *
@@ -201,7 +201,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if JavaScript is enabled and used by a %Web control, @n
-        *                                      else @c false
+        *                              else @c false
         */
        bool IsJavascriptEnabled(void) const;
 
@@ -212,7 +212,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if auto image loading is enabled, @n
-        *                                      else @c false
+        *                              else @c false
         */
        bool IsAutoImageLoadEnabled(void) const;
 
@@ -222,22 +222,22 @@ public:
         *
         * @since               2.0
         *
-        * @return              The input style of keypad
+        * @return              The input style of the keypad
         */
        Tizen::Ui::Controls::InputStyle GetInputStyle(void) const;
 
        /**
-        * Sets a certificate error handling mode for a %Web control.
+        * Sets the certificate error handling mode for a %Web control.
         *
         * @since               2.0
         *
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   mode                    A certificate error handling mode
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   mode                                    The certificate error handling mode
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void SetCertificateErrorHandlingMode(CertificateErrorHandlingMode mode);
@@ -248,12 +248,12 @@ public:
         *
         * @since               2.0
         *
-        * @return              A certificate error handling mode
+        * @return              The certificate error handling mode
         */
        CertificateErrorHandlingMode GetCertificateErrorHandlingMode(void) const;
 
        /**
-        * Sets a user agent for a %Web control.
+        * Sets the user agent for a %Web control.
         *
         * @since               2.0
         *
@@ -262,134 +262,134 @@ public:
        void SetUserAgent(const Tizen::Base::String& agent);
 
        /**
-        * Gets a value of user agent for a %Web control.
+        * Gets the value of the user agent for a %Web control.
         *
         * @since               2.0
         *
-        * @return              The value of user agent
+        * @return              The value of the user agent
         */
        Tizen::Base::String GetUserAgent(void) const;
 
        /**
-        * Decides if a %Web control loads the resized contents to fit width automatically.
+        * Decides if a %Web control loads the resized contents to fit the width automatically.
         *
         * @since               2.0
         *
-        * @param[in]   enable                  Set to @c true if the %Web control should load contents to fit width, @n
-        *                                                                      else @c false
+        * @param[in]   enable                  Set to @c true if the %Web control should load contents to fit the width, @n
+        *                                                              else @c false
         */
        void SetAutoFittingEnabled(bool enable);
 
        /**
-        * Checks whether a %Web control loads the resize contents to fit width. @n
+        * Checks whether a %Web control loads the resized contents to fit the width. @n
         * The default value is @c true.
         *
         * @since               2.0
         *
         * @return              @c true if auto fitting is enabled, @n
-        *                                      else @c false
+        *                              else @c false
         */
        bool IsAutoFittingEnabled(void) const;
 
        /**
-        * Decides if a %Web control allows JavaScript to open new window.
+        * Decides if a %Web control allows JavaScript to open new window.
         *
         * @since               2.0
         *
-        * @param[in]   enable                  Set to @c true if the %Web control should allow JavaScript to open new window, @n
-        *                                                                      else @c false
+        * @param[in]   enable                  Set to @c true if the %Web control should allow JavaScript to open new window, @n
+        *                                                              else @c false
         */
        void SetJavaScriptPopupEnabled(bool enable);
 
        /**
-        * Checks whether a %Web control allows JavaScript to open new window. @n Returns @c true if opening new window by JavaScript is enabled.
+        * Checks whether a %Web control allows JavaScript to open a new window.
         * The default value is @c true.
         *
         * @since               2.0
         *
-        * @return              @c true if opening new window by JavaScript is enabled, @n
-        *                                      else @c false
+        * @return              @c true if opening new window by JavaScript is enabled, @n
+        *                              else @c false
         */
        bool IsJavaScriptPopupEnabled(void) const;
 
        /**
-        * Decides if a %Web control supports html5 geolocation feature.
+        * Decides if a %Web control supports the HTML5 geolocation feature.
         *
         * @since               2.0
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   enable                  Set to @c true if the %Web control should support html5 geolocation feature, @n
-        *                                                                      else @c false
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method. @b Since: @b 2.1
+        * @param[in]   enable                                  Set to @c true if the %Web control should support the HTML5 geolocation feature, @n
+        *                                                                              else @c false
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method. @b Since: @b 2.1
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void SetGeolocationEnabled(bool enable);
 
        /**
-        * Checks whether a %Web control supports html5 geolocation feature. @n Returns @c true if html5 geolocation feature is enabled.
+        * Checks whether a %Web control supports the HTML5 geolocation feature.
         * The default value is @c true.
         *
         * @since               2.0
         *
-        * @return              @c true if html5 geolocation feature is enabled, @n
-        *                                      else @c false
+        * @return              @c true if the HTML5 geolocation feature is enabled, @n
+        *                              else @c false
         */
        bool IsGeolocationEnabled(void) const;
 
        /**
-        * Decides if a %Web control saves form data automatically and supports autocomplete feature.
+        * Decides if a %Web control saves the form data automatically and supports the autocomplete feature.
         *
         * @since               2.1
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   enable                  Set to @c true if the %Web control should save form data automatically and supports autocomplete feature, @n
-        *                                                                      else @c false
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method.
+        * @param[in]   enable                                  Set to @c true if the %Web control should save the form data automatically and supports the autocomplete feature, @n
+        *                                                                              else @c false
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method.
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void SetAutoFormDataShowEnabled(bool enable);
 
        /**
-        * Checks whether %Web control saves form data automatically and supports autocomplete feature. @n Returns @c true if those are enabled.
+        * Checks whether a %Web control saves the form data automatically and supports the autocomplete feature.
         * The default value is @c true.
         *
         * @since               2.1
         *
-        * @return              @c true if saving form data and autocomplete feature are enabled, @n
-        *                                      else @c false
+        * @return              @c true if the %Web control saves the form data and enables the autocomplete feature, @n
+        *                              else @c false
         */
        bool IsAutoFormDataShowEnabled(void) const;
 
        /**
-        * Decides if a %Web control saves ID/password for login form automatically and supports autofill feature.
+        * Decides if a %Web control saves the ID/password for a login form automatically and supports the autofill feature.
         * 
         * @since               2.1
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.service
         *
-        * @param[in]   enable                  Set to @c true if the %Web control should save login ID/password automatically and supports autofill feature, @n
-        *                                                                      else @c false
-        * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
-        * @exception   E_USER_NOT_CONSENTED    The user blocks an application from calling this method.
+        * @param[in]   enable                                  Set to @c true if the %Web control should save the login ID/password automatically and supports the autofill feature, @n
+        *                                                                              else @c false
+        * @exception   E_SUCCESS                               The method is successful.
+        * @exception   E_PRIVILEGE_DENIED              The application does not have the privilege to call this method.
+        * @exception   E_USER_NOT_CONSENTED    The user has blocked the application from calling this method.
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
        void SetAutoLoginFormFillEnabled(bool enable);
 
        /**
-        * Checks whether %Web control saves ID/password for login form automatically and supports autofill feature. @n Returns @c true if those are enabled.
+        * Checks whether a %Web control saves the ID/password for a login form automatically and supports the autofill feature.
         * The default value is @c true.
         *
         * @since               2.1
         *
-        * @return              @c true if saving ID/password for login form and autofill feature are enabled, @n
-        *                                      else @c false
+        * @return              @c true if the %Web control saves the ID/password for a login form and enables the autofill feature, @n
+        *                              else @c false
         */
        bool IsAutoLoginFormFillEnabled(void) const;
 
@@ -408,7 +408,7 @@ public:
         * @since               2.0
         *
         * @return              @c true if the two instances match, @n
-        *                                      else @c false
+        *                              else @c false
         * @param[in]   obj                             The object to compare with the current instance
         * @remarks             This method returns @c true if and only if the two instances contain the same elements.
         * @see                 Tizen::Base::Object::Equals()
@@ -420,7 +420,7 @@ public:
         *
         * @since               2.0
         *
-        * @param[in]   setting                 The instance of the %WebSetting class to assign from
+        * @param[in]   setting                 The instance of the %WebSetting class to assign
         */
        WebSetting& operator =(const WebSetting& setting);
 
index 5c81095..f0cb286 100755 (executable)
@@ -17,7 +17,7 @@
 \r
 /**\r
 * @file            FWebCtrlWebStorageManager.h\r
-* @brief                     This is the header file for the %WebStorageManager class.\r
+* @brief           This is the header file for the %WebStorageManager class.\r
 *\r
 * This header file contains the declarations of the %WebStorageManager class for a %Web control.\r
 */\r
@@ -79,9 +79,9 @@ public:
         * @privlevel   public\r
         * @privilege   %http://tizen.org/privilege/web.privacy\r
         *\r
-        * @return              A pointer to IList containing origin(Tizen::Base::String) list, @n\r
-        *                                      else @c null if no web storage data exists\r
-        * @param[in]   storageType             The web storage type\r
+        * @return              A pointer to Tizen::Base::Collection::IList that contains the origin(Tizen::Base::String) list, @n\r
+        *                              else @c null if no web storage data exists\r
+        * @param[in]   storageType                     The web storage type\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_UNSUPPORTED_TYPE      The specified @c storageType is not supported.\r
         * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.\r
@@ -90,17 +90,17 @@ public:
        Tizen::Base::Collection::IList* GetOriginListN(WebStorageType storageType) const;\r
 \r
        /**\r
-        * Sets the default quota for a given origin for a given storage type. @n\r
-        * Only the @c WEB_STORAGE_TYPE_WEB_SQL_DATABASE and the @c WEB_STORAGE_TYPE_APPLICATION_CACHE are supported.\r
+        * Sets the default quota for a given origin of a given storage type. @n\r
+        * Only @c WEB_STORAGE_TYPE_WEB_SQL_DATABASE and @c WEB_STORAGE_TYPE_APPLICATION_CACHE are supported.\r
         *\r
         * @since               2.1\r
         * @privlevel   public\r
         * @privilege   %http://tizen.org/privilege/web.privacy\r
         *\r
         * @return              An error code\r
-        * @param[in]   storageType             The web storage type\r
-        * @param[in]   origin                  The origin\r
-        * @param[in]   quota                   The quota of the web storage to set in bytes\r
+        * @param[in]   storageType                     The web storage type\r
+        * @param[in]   origin                          The origin\r
+        * @param[in]   quota                           The quota of the web storage to set in bytes\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_INVALID_ARG           The specified @c origin is invalid.\r
         * @exception   E_UNSUPPORTED_TYPE      The specified @c storageType is not supported.\r
@@ -110,16 +110,16 @@ public:
 \r
 \r
        /**\r
-        * Gets the quota for a given origin for a given storage type. @n\r
-        * Only the @c WEB_STORAGE_TYPE_WEB_SQL_DATABASE is supported.\r
+        * Gets the quota for a given origin of a given storage type. @n\r
+        * Only @c WEB_STORAGE_TYPE_WEB_SQL_DATABASE is supported.\r
         *\r
         * @since               2.1\r
         * @privlevel   public\r
         * @privilege   %http://tizen.org/privilege/web.privacy\r
         *\r
         * @return              The usage of the web storage in bytes\r
-        * @param[in]   storageType             The web storage type\r
-        * @param[in]   origin                  The origin\r
+        * @param[in]   storageType                     The web storage type\r
+        * @param[in]   origin                          The origin\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_INVALID_ARG           The specified @c origin is invalid.\r
         * @exception   E_UNSUPPORTED_TYPE      The specified @c storageType is not supported.\r
@@ -128,16 +128,16 @@ public:
        long GetQuotaForOrigin(WebStorageType storageType, const Tizen::Base::String& origin);\r
 \r
        /**\r
-        * Gets the usage for a given origin for a given storage type. @n\r
-        * The @c WEB_STORAGE_TYPE_INDEXED_DATABASE and the @c WEB_STORAGE_TYPE_FILE_SYSTEM are not supported.\r
+        * Gets the usage for a given origin of a given storage type. @n\r
+        * @c WEB_STORAGE_TYPE_INDEXED_DATABASE and @c WEB_STORAGE_TYPE_FILE_SYSTEM are not supported.\r
         *\r
         * @since               2.1\r
         * @privlevel   public\r
         * @privilege   %http://tizen.org/privilege/web.privacy\r
         *\r
         * @return              The usage of the web storage in bytes\r
-        * @param[in]   storageType             The web storage type\r
-        * @param[in]   origin                  The origin\r
+        * @param[in]   storageType                     The web storage type\r
+        * @param[in]   origin                          The origin\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_INVALID_ARG           The specified @c origin is invalid.\r
         * @exception   E_UNSUPPORTED_TYPE      The specified @c storageType is not supported.\r
@@ -147,16 +147,16 @@ public:
        long GetUsageForOrigin(WebStorageType storageType, const Tizen::Base::String& origin) const;\r
 \r
        /**\r
-        * Removes the data for a given origin for a given storage type. @n\r
-        * The @c WEB_STORAGE_TYPE_INDEXED_DATABASE is not supported.\r
+        * Removes the data for a given origin of a given storage type. @n\r
+        * @c WEB_STORAGE_TYPE_INDEXED_DATABASE is not supported.\r
         *\r
         * @since               2.1\r
         * @privlevel   public\r
         * @privilege   %http://tizen.org/privilege/web.privacy\r
         *\r
         * @return              An error code\r
-        * @param[in]   storageType             The web storage type\r
-        * @param[in]   origin                  The origin\r
+        * @param[in]   storageType                     The web storage type\r
+        * @param[in]   origin                          The origin\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_INVALID_ARG           The specified @c origin is invalid.\r
         * @exception   E_UNSUPPORTED_TYPE      The specified @c storageType is not supported.\r
@@ -166,14 +166,14 @@ public:
        result Remove(WebStorageType storageType, const Tizen::Base::String& origin);\r
 \r
        /**\r
-        * Removes all data for a given storage type.\r
+        * Removes all the data of a given storage type.\r
         *\r
         * @since               2.1\r
         * @privlevel   public\r
         * @privilege   %http://tizen.org/privilege/web.privacy\r
         *\r
         * @return              An error code\r
-        * @param[in]   storageType             The web storage type\r
+        * @param[in]   storageType                     The web storage type\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_UNSUPPORTED_TYPE      The specified @c storageType is not supported.\r
         * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.\r
@@ -182,12 +182,12 @@ public:
        result RemoveAll(WebStorageType storageType);\r
 \r
        /**\r
-        * Gets the web storage manager instance.\r
+        * Gets a web storage manager instance.\r
         *\r
         * @since               2.1\r
         *\r
         * @return              A pointer to the %WebStorageManager instance, @n\r
-        *                                      else @c null if it fails\r
+        *                              else @c null if it fails\r
         * @exception   E_SUCCESS                       The method is successful.\r
         * @exception   E_OUT_OF_MEMORY         The memory is insufficient.\r
         * @remarks             The specific error code can be accessed using the GetLastResult() method.\r
old mode 100755 (executable)
new mode 100644 (file)
index 8819bfb..6917983
@@ -48,12 +48,12 @@ namespace Tizen { namespace Web
 
 /**
  * @class              HistoryItem
- * @brief              This class is used for accessing a history item stored in the PageNavigationList class or the %WebHistory class.
+ * @brief              This class is used for accessing a history item stored in the %PageNavigationList class or the %WebHistory class.
  *
  * @since              2.0
  *
  * The %HistoryItem class provides access to the Controls::PageNavigationList class item and the WebHistory class.
- * Each item contains the title and the URL of the page visited.
+ * Each item contains the title and URL of the page visited.
  */
 class _OSP_EXPORT_ HistoryItem
        : public Tizen::Base::Object
@@ -92,9 +92,7 @@ public:
         * @return              The image
         *
         * @exception   E_SUCCESS       The method is successful.
-        * @exception   E_SYSTEM        Either of the following conditions has occurred: @n
-        *                                              - The method cannot proceed due to a severe system error. @n
-        *                                              - The method has failed because it does not work on a service application.
+        * @exception   E_SYSTEM        The method cannot proceed due to a severe system error.
         * @remarks     The specific error code can be accessed using the GetLastResult() method.
         */
        Tizen::Graphics::Bitmap* GetFaviconN(void) const;
old mode 100755 (executable)
new mode 100644 (file)
index d996c12..ac84ae3
@@ -39,14 +39,14 @@ class _WebBookmarkImpl;
 
 /**
  * @class              WebBookmark
- * @brief              This class provides methods to manage bookmark items of the browser.
+ * @brief              This class provides methods to manage the bookmark items of the browser.
  *
  * @since              2.1
  *
  * @final              This class is not intended for extension.
  *
- * The %WebBookmark class provides methods to get bookmark information of the browser and organize it.
- * The bookmark system has hierarchical structure with the parent folder ID supporting multiple folders and the bookmark items are represented by the BookmarkItem class. @n
+ * The %WebBookmark class provides methods to get the browser's bookmark information and organize it.
+ * The bookmark system has hierarchical structure with the parent folder ID supporting multiple folders and the bookmark items are represented by the BookmarkItem class. @n
  * If you use these APIs to backup and restore the bookmark, add bookmark items and folders recursively from the topmost level.
  */
 class _OSP_EXPORT_ WebBookmark
@@ -87,9 +87,9 @@ public:
         * @privilege   %http://tizen.org/privilege/bookmark.write
         *
         * @return              An error code
-        * @param[in]   title                   The title of bookmark item
-        * @param[out]  folderId                The current folder ID
-        * @param[in]   parentId                The parent folder ID
+        * @param[in]   title                           The title of a bookmark item
+        * @param[out]  folderId                        The current folder ID
+        * @param[in]   parentId                        The parent folder ID
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_INVALID_ARG           Either of the following conditions has occurred: @n
         *                                                                       - The specified title is an empty string. @n
@@ -110,10 +110,10 @@ public:
         * @privilege   %http://tizen.org/privilege/bookmark.write
         *
         * @return              An error code
-        * @param[in]   title                   The title of bookmark item
-        * @param[in]   url                             The URL of bookmark item
-        * @param[out]  bookmarkId              The current bookmark ID
-        * @param[in]   parentId                The parent folder ID
+        * @param[in]   title                           The title of a bookmark item
+        * @param[in]   url                                     The URL of a bookmark item
+        * @param[out]  bookmarkId                      The current bookmark ID
+        * @param[in]   parentId                        The parent folder ID
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_INVALID_ARG           Either of the following conditions has occurred: @n
         *                                                                       - The specified @c title is an empty string. @n
@@ -134,8 +134,8 @@ public:
         * @privilege   %http://tizen.org/privilege/bookmark.write
         *
         * @return              An error code
-        * @param[in]   bookmarkId              The bookmark ID
-        * @param[in]   favicon                 The favicon image
+        * @param[in]   bookmarkId                      The bookmark ID
+        * @param[in]   favicon                         The favicon image
         * @exception   E_SUCCESS                       The method is successful.
         * @exception   E_INVALID_ARG           The specified @c bookmarkId is invalid.
         * @exception   E_INVALID_DATA          The specified @c favicon data is invalid.
@@ -146,17 +146,17 @@ public:
        result SetFavicon(RecordId bookmarkId, const Tizen::Graphics::Bitmap& favicon);
 
        /**
-        * Gets the bookmark item pointed to by the specified @c index.
+        * Gets the bookmark item that the specified @c index points to.
         *
         * @since               2.1
         * @privlevel   platform
         * @privilege   %http://tizen.org/privilege/bookmark.read
         *
         * @return              The bookmark item at the specified @c index
-        * @param[in]   index                   The index of an element @n
-        *                                                              The value of the @c index must be greater than or equal to @c 0.
+        * @param[in]   index                           The index of the element @n
+        *                                                                      The value of the @c index must be greater than or equal to @c 0.
         * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_OUT_OF_RANGE          The specified @c index is out of range.
+        * @exception   E_OUT_OF_RANGE          The specified @c index is out of the valid range.
         * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
@@ -177,7 +177,7 @@ public:
        int GetItemCount(void) const;
 
        /**
-        * Removes all elements.
+        * Removes all the elements.
         *
         * @since               2.1
         * @privlevel   platform
old mode 100755 (executable)
new mode 100644 (file)
index e242ffd..32a8063
@@ -77,17 +77,17 @@ public:
        result Construct(void);
 
        /**
-        * Gets the history item pointed to by the specified @c index.
+        * Gets the history item that the specified @c index points to.
         *
         * @since               2.0
         * @privlevel   public
         * @privilege   %http://tizen.org/privilege/web.privacy
         *
         * @return              The history item at the specified @c index
-        * @param[in]   index                   The index of an element @n
-        *                                                              The value of the index must be greater than or equal to @c 0.
+        * @param[in]   index                           The index of the element @n
+        *                                                                      The value of the index must be greater than or equal to @c 0.
         * @exception   E_SUCCESS                       The method is successful.
-        * @exception   E_OUT_OF_RANGE          The specified @c index is out of range.
+        * @exception   E_OUT_OF_RANGE          The specified @c index is out of the valid range.
         * @exception   E_PRIVILEGE_DENIED      The application does not have the privilege to call this method.
         * @remarks             The specific error code can be accessed using the GetLastResult() method.
         */
index cf9b7e7..37b431e 100755 (executable)
@@ -80,13 +80,25 @@ osp web library (DEV)
 %setup -q
 
 %build 
+%if 0%{?tizen_build_binary_release_type_eng}
+CXXFLAGS="$CXXFLAGS -D_SECURE_LOG"
+%endif
 MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'`
 %ifarch %{ix86}
-CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_SECURE_LOG -D_OSP_X86_ -D_OSP_EMUL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%if 0%{?simulator}
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ -D_OSP_EMUL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%else
+CXXFLAGS="$CXXFLAGS -D_OSP_DEBUG_ -D_OSP_X86_ " cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%endif
 %else
+
+%if 0%{?tizen_build_binary_release_type_eng}
 CXXFLAGS="-O2 -g -pipe -Wall -fno-exceptions -Wformat -Wformat-security -Wl,--as-needed -fmessage-length=0 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=softfp -D__SOFTFP__ -mthumb -Wa,-mimplicit-it=thumb -funwind-tables -D_OSP_DEBUG_ -D_SECURE_LOG -D_OSP_ARMEL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
+%else
+CXXFLAGS="-O2 -g -pipe -Wall -fno-exceptions -Wformat -Wformat-security -Wl,--as-needed -fmessage-length=0 -march=armv7-a -mtune=cortex-a8 -mlittle-endian -mfpu=neon -mfloat-abi=softfp -D__SOFTFP__ -mthumb -Wa,-mimplicit-it=thumb -funwind-tables -D_OSP_DEBUG_ -D_OSP_ARMEL_" cmake . -DCMAKE_INSTALL_PREFIX=%{_prefix} -DFULLVER=%{version} -DMAJORVER=${MAJORVER}
 %endif
 
+%endif
 # Call make instruction with smp support
 make %{?jobs:-j%jobs}
 
index de447c4..eeaa139 100755 (executable)
@@ -89,7 +89,7 @@ _AuthConfirmPopup::Construct(const String& host, const String& realm, Authentica
 
        Rectangle rect(0, 0, 0, 0);
        rect.width = pPopupData->popupDim.width;
-       rect.height = (2*pPopupData->spacePad) + (pPopupData->editDim.height*2) + pPopupData->btnDim.height + (2*pPopupData->labelDim.height);
+       rect.height = (2*pPopupData->spacePad) + (pPopupData->editDim.height*2) + pPopupData->panelHeight + (2*pPopupData->labelDim.height);
        r = _WebPopup::Construct(true, Dimension(rect.width, rect.height));
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
@@ -104,7 +104,6 @@ _AuthConfirmPopup::Construct(const String& host, const String& realm, Authentica
        String hostRealm(host);
        hostRealm.Append(L": \n ");
        hostRealm.Append(realm);
-       hostRealm.Append(L"\"");
        r = pLabel->Construct(rect, hostRealm);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
@@ -177,7 +176,6 @@ _AuthConfirmPopup::Construct(const String& host, const String& realm, Authentica
        pLayout->SetHorizontalAlignment(*pHostLabel, LAYOUT_HORIZONTAL_ALIGN_CENTER);
        pLayout->SetHorizontalAlignment(*__pIdEditField, LAYOUT_HORIZONTAL_ALIGN_CENTER);
        pLayout->SetHorizontalAlignment(*__pPwdEditField, LAYOUT_HORIZONTAL_ALIGN_CENTER);
-       pLayout->SetHorizontalAlignment(*pButtonPanel, LAYOUT_HORIZONTAL_ALIGN_CENTER);
 
        pLayout->SetSpacing(*__pPwdEditField, pPopupData->spacePad);
        pLayout->SetSpacing(*pButtonPanel, pPopupData->spacePad);
@@ -193,6 +191,9 @@ _AuthConfirmPopup::OnActionPerformed(const Control& source, int actionId)
 {
        result r = E_SUCCESS;
 
+       r = HidePopup();
+       SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+
        switch (actionId)
        {
        case ID_BUTTON_AUTH_PROCESS:
@@ -206,9 +207,6 @@ _AuthConfirmPopup::OnActionPerformed(const Control& source, int actionId)
        default:
                break;
        }
-
-       r = HidePopup();
-       SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
 }
 
 bool
index 52d9ba9..0ef39ae 100755 (executable)
@@ -39,7 +39,7 @@
 #include <FUi_ControlManager.h>
 #include <FUi_ResourceManager.h>
 #include "FWebCtrl_CertificateConfirmPopup.h"
-#include "FWebCtrl_EflWebkit.h"
+#include "FWebCtrl_WebManager.h"
 #include "FWebCtrl_Utility.h"
 #include "FWebCtrl_WebImpl.h"
 
@@ -68,6 +68,7 @@ _CertificateConfirmPopup::_CertificateConfirmPopup(void)
                                                , __pCertificatePolicyData(null)
                                                , __pParent(null)
                                                , __pCertificatePopup(null)
+                                               , __reaction(false)
 {
 }
 
@@ -78,6 +79,10 @@ _CertificateConfirmPopup::~_CertificateConfirmPopup(void)
        {
                HandleUserAction(false);
        }
+       if (__pCertificatePopup.get())
+       {
+               __pCertificatePopup.reset();
+       }
 }
 
 
@@ -112,18 +117,18 @@ _CertificateConfirmPopup::Construct(_CertificatePopupMode certPopupMode, Ewk_Cer
        if( __certPopupMode == CERTIFICATE_POPUP_MODE_VIEW )
        {
                titleText = pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_HEADER_SECURITY_CERTIFICATE_ABB");
-               popupMaxHeight = 4*pPopupData->labelDim.height + pPopupData->btnDim.height + 2*pPopupData->sideMargin;
+               popupMaxHeight = 4*pPopupData->labelDim.height + pPopupData->panelHeight;
 
                rect.height = 4*pPopupData->labelDim.height;
                rect.width = pPopupData->labelDim.width;
 
                idList.Add(*(new Integer(ID_BUTTON_CERTIFICATE_CLOSE)));
-               titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_TPLATFORM_BUTTON_OK"))));
+               titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_OK"))));
        }
        else    // CERTIFICATE_POPUP_MODE_CONFIRM
        {
                titleText = pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_HEADER_SECURITY_WARNING_ABB");
-               popupMaxHeight = 2*pPopupData->labelDim.height + pPopupData->btnDim.height + 2*pPopupData->sideMargin;
+               popupMaxHeight = 2*pPopupData->labelDim.height + pPopupData->panelHeight;
 
                rect.height = 2*pPopupData->labelDim.height;
                rect.width = pPopupData->labelDim.width;
@@ -199,11 +204,6 @@ _CertificateConfirmPopup::Construct(_CertificatePopupMode certPopupMode, Ewk_Cer
        r = CreateAndAddButtons(idList, titleList, pButtonPanel);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       pLayout->SetHorizontalFitPolicy(*pButtonPanel, FIT_POLICY_PARENT);
-       pLayout->SetHorizontalAlignment(*pButtonPanel, LAYOUT_HORIZONTAL_ALIGN_CENTER);
-
-       pLayout->SetSpacing(*pButtonPanel, 2*pPopupData->sideMargin);
-
        SetPropagatedKeyEventListener(this);
 
        return E_SUCCESS;
@@ -218,11 +218,24 @@ _CertificateConfirmPopup::OnActionPerformed(const Control& source, int actionId)
        switch (actionId)
        {
        case ID_BUTTON_CERTIFICATE_ALLOW:
+       {
+               if (__reaction)
+               {
+                       return;
+               }
+
                HandleUserAction(true);
                break;
+       }
 
        case ID_BUTTON_CERTIFICATE_VIEW:
        {
+               if (__reaction)
+               {
+                       return;
+               }
+
+               __reaction = true;
                std::unique_ptr<_CertificateConfirmPopup> pCertificatePopup(new (std::nothrow) _CertificateConfirmPopup());
                SysTryReturnVoidResult(NID_WEB_CTRL, pCertificatePopup.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
 
@@ -233,16 +246,29 @@ _CertificateConfirmPopup::OnActionPerformed(const Control& source, int actionId)
 
                r = __pCertificatePopup->ShowPopup();
                SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
-               __pCertificatePopup.release();
                return;
        }
 
        case ID_BUTTON_CERTIFICATE_CANCEL:
+       {
+               if (__reaction)
+               {
+                       return;
+               }
+
                HandleUserAction(false);
                break;
+       }
 
        case ID_BUTTON_CERTIFICATE_CLOSE:
+       {
+               if (__reaction)
+               {
+                       return;
+               }
+
                break;
+       }
 
        default:
                SysAssert(false);
@@ -267,8 +293,16 @@ _CertificateConfirmPopup::OnUserEventReceivedN(RequestId requestId, IList* pArgs
        switch (requestId)
        {
        case ID_CERTIFICATE_CONFIRM_POPUP_CLOSE:
+       {
                __pCertificatePopup.reset();
+
+               if (__reaction)
+               {
+                       __reaction = false;
+               }
+
                break;
+       }
        default:
                break;
        }
@@ -402,7 +436,7 @@ _CertificateConfirmPopup::GenerateCertifiate(String& certString)
        certString.Append(GetStringOfToken(subject, L"/OU=") + L"\n");
 
        certString.Append(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BODY_SERIAL_NUMBER_C"));
-       certString.Append(L":\n");
+       certString.Append(L"\n");
        certString.Append(certificate.GetSerialNumber() + L"\n\n\n");
 
        //Issued by
@@ -435,7 +469,7 @@ _CertificateConfirmPopup::GenerateCertifiate(String& certString)
 
        //FingerPrints
        certString.Append(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BODY_FINGERPRINTS_C"));
-       certString.Append(L":\n\n");
+       certString.Append(L"\n\n");
        certString.Append(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_SIGNATURE_ALGORITHM_VODA"));
        certString.Append(L":\n");
        certString.Append(certificate.GetSignatureAlgorithm() + L"\n\n");
@@ -445,6 +479,7 @@ _CertificateConfirmPopup::GenerateCertifiate(String& certString)
        {
                String fingerPrint;
                StringUtil::Utf8ToString((const char*)pFingerPrint->GetPointer(), fingerPrint);
+               fingerPrint.SetLength(pFingerPrint->GetLimit());
                certString.Append(fingerPrint + L"\n\n");
        }
 
index 014bd33..aeedd30 100755 (executable)
 #include <FAppApp.h>
 #include <FGrpPoint.h>
 #include <FGrpRectangle.h>
-#include <FIoDbEnumerator.h>
 #include <FSysVibrator.h>
 #include <FUiAnimVisualElement.h>
-#include <FApp_AppInfo.h>
 #include <FBaseSysLog.h>
 #include <FBase_StringConverter.h>
 #include <FGrp_CoordinateSystem.h>
-#include <FIo_DirectoryImpl.h>
-#include <FIo_DatabaseImpl.h>
-#include <FIo_FileImpl.h>
 #include <FSecCert_CertService.h>
-#include <FSys_VibratorImpl.h>
 #include <FUi_Control.h>
 #include <FUi_Window.h>
 #include "FUiAnim_EflNode.h"
@@ -64,16 +58,8 @@ namespace Tizen { namespace Web { namespace Controls
 
 static const char PLUGIN_DIRECTORY_PATH[] =  "/usr/lib/osp/browser-plugin/";
 
-
-extern const wchar_t CUSTOM_DB_DIRECTORY_PATH[] = L"data/.webkit/customDatabase/";
-extern const wchar_t USER_CONFIRM_DB_NAME[] = L"userConfirm.db";
-extern const wchar_t GEOLOCATION_TABLE_NAME[] = L"geolocationPermission";
-extern const wchar_t CUSTOM_PROTOCOL_TABLE_NAME[] = L"customProtocol";
-extern const wchar_t CUSTOM_CONTENT_TABLE_NAME[] = L"customContent";
-extern const wchar_t CERTIFICATE_TABLE_NAME[] = L"certificate";
-
-
-static const int CUSTOM_DB_TABLE_COUNT= 4;
+static const wchar_t ICON_DB_DIRECTORY_PATH[] = L"data/.webkit/iconDatabase/";
+static const wchar_t ICON_DB_FILE_NAME[] = L"icon.db";
 
 
 _EflWebkit::_EflWebkit(void)
@@ -90,10 +76,15 @@ _EflWebkit::~_EflWebkit(void)
        {
                __pContainerVisualElement->SetSurface(null);
        }
+
        delete __pSurface;
-//     evas_object_smart_member_del(__pWebFrame);
-       evas_object_del(__pWebFrame);
-       __pWebFrame = null;
+       __pSurface = null;
+
+       if (__pWebFrame)
+       {
+               evas_object_del(__pWebFrame);
+               __pWebFrame = null;
+       }
 }
 
 
@@ -162,19 +153,16 @@ _EflWebkit::SetWebConfiguration(void) const
        ewk_context_additional_plugin_path_set(pContext, PLUGIN_DIRECTORY_PATH);
 
        String certPath(_CertService::GetCertificateCrtFilePath());
-       std::unique_ptr<char[]> pcertPath(_StringConverter::CopyToCharArrayN(certPath));
-       SysTryReturn(NID_WEB_CTRL, pcertPath.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+       std::unique_ptr<char[]> pCertPath(_StringConverter::CopyToCharArrayN(certPath));
+       SysTryReturn(NID_WEB_CTRL, pCertPath.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
-       ewk_context_certificate_file_set(pContext, pcertPath.get());
+       ewk_context_certificate_file_set(pContext, pCertPath.get());
 
-       r = CreateResourceDirectory();
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       String iconPath(App::App::GetInstance()->GetAppRootPath() + ICON_DB_DIRECTORY_PATH + ICON_DB_FILE_NAME);
+       std::unique_ptr<char[]> pIconPath(_StringConverter::CopyToCharArrayN(iconPath));
+       SysTryReturn(NID_WEB_CTRL, pIconPath.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
-       r = InitializeCustomDb();
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       r = SetProxyAddress();
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       ewk_context_icon_database_path_set(pContext, pIconPath.get());
 
        InitializeCustomHeader();
 
@@ -183,116 +171,8 @@ _EflWebkit::SetWebConfiguration(void) const
 
 
 result
-_EflWebkit::CreateResourceDirectory(void) const
+_EflWebkit::SetProxyAddress(char* pProxy) const
 {
-       String html5FeaturesPath(Tizen::App::App::GetInstance()->GetAppRootPath() + CUSTOM_DB_DIRECTORY_PATH);
-
-       if (!_FileImpl::IsFileExist(html5FeaturesPath))
-       {
-               result r = E_SUCCESS;
-
-               r = _DirectoryImpl::Create(html5FeaturesPath, true);
-               SysTryReturnResult(NID_WEB_CTRL, r == E_SUCCESS, E_SYSTEM, "A system error has been occurred. create html5 features directory.");
-       }
-
-       return E_SUCCESS;
-}
-
-
-result
-_EflWebkit::InitializeCustomDb(void) const
-{
-       result r = E_SUCCESS;
-
-       _DatabaseImpl db;
-       String path(Tizen::App::App::GetInstance()->GetAppRootPath() + CUSTOM_DB_DIRECTORY_PATH + USER_CONFIRM_DB_NAME);
-       String geolocationTable(GEOLOCATION_TABLE_NAME);
-       String protocolTable(CUSTOM_PROTOCOL_TABLE_NAME);
-       String contentTable(CUSTOM_CONTENT_TABLE_NAME);
-       String certificateTable(CERTIFICATE_TABLE_NAME);
-
-       r = db.Construct(path, "a+", null);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       std::unique_ptr<DbEnumerator>   pEnum(db.QueryN(L"Select count(name) from sqlite_master Where type='table' And name in ('" + geolocationTable + L"', '" + protocolTable + L"', '" + contentTable + L"', '" + certificateTable + L"')"));
-       if (pEnum.get())
-       {
-               int count = 0;
-
-               r = pEnum->MoveNext();
-               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, false, r, "[%s] Propagating.", GetErrorMessage(r));
-
-               r = pEnum->GetIntAt(0, count);
-               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, false, r, "[%s] Propagating.", GetErrorMessage(r));
-
-               if (count == CUSTOM_DB_TABLE_COUNT)
-               {
-                       return E_SUCCESS;
-               }
-       }
-
-       pEnum.reset();
-       pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select name from sqlite_master Where type='table' And name = '" + geolocationTable + L"'"));
-       if (!pEnum.get())
-       {
-               r = db.ExecuteSql(
-                       L"CREATE TABLE IF NOT EXISTS " + geolocationTable + L"(id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT, permission INTEGER)",
-                       true);
-               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-       }
-
-       pEnum.reset();
-       pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select name from sqlite_master Where type='table' And name = '" + protocolTable + L"'"));
-       if (!pEnum.get())
-       {
-               r = db.ExecuteSql(
-                       L"CREATE TABLE IF NOT EXISTS " + protocolTable + L"(id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, url TEXT, mime TEXT, allow INTEGER)",
-                       true);
-               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-       }
-
-       pEnum.reset();
-       pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select name from sqlite_master Where type='table' And name = '" + contentTable + L"'"));
-       if (!pEnum.get())
-       {
-               r = db.ExecuteSql(
-                       L"CREATE TABLE IF NOT EXISTS " + contentTable + L"(id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, url TEXT, mime TEXT, allow INTEGER)",
-                       true);
-               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-       }
-
-       pEnum.reset();
-       pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select name from sqlite_master Where type='table' And name = '" + certificateTable + L"'"));
-       if (!pEnum.get())
-       {
-               r = db.ExecuteSql(
-                       L"CREATE TABLE IF NOT EXISTS " + certificateTable + L"(id INTEGER PRIMARY KEY AUTOINCREMENT, pem TEXT, allow INTEGER)",
-                       true);
-               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-       }
-
-       return E_SUCCESS;
-}
-
-
-result
-_EflWebkit::SetProxyAddress(void) const
-{
-       int ret = -1;
-       connection_h handle = null;
-
-       ret = connection_create(&handle);
-       SysTryReturnResult(NID_WEB_CTRL, ret == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has been occurred. Failed to create connection.");
-
-       char* pProxy = null;
-       connection_address_family_e family = CONNECTION_ADDRESS_FAMILY_IPV4;
-
-       ret = connection_get_proxy(handle, family, &pProxy);
-       SysTryReturnResult(NID_WEB_CTRL, ret == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has been occurred. Failed to get proxy address.");
-
-       ret = connection_destroy(handle);
-       SysTryReturnResult(NID_WEB_CTRL, ret == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has been occurred. Failed to destroy connection.");
-
        Ewk_Context* pContext = ewk_view_context_get(__pWebFrame);
        SysAssertf(pContext, "Failed to get context.");
 
@@ -307,11 +187,6 @@ _EflWebkit::SetProxyAddress(void) const
 
        SysLog(NID_WEB_CTRL, "The current value of proxy is %s", pProxy);
 
-       if (pProxy)
-       {
-               free(pProxy);
-       }
-
        return E_SUCCESS;
 }
 
@@ -319,33 +194,28 @@ _EflWebkit::SetProxyAddress(void) const
 void
 _EflWebkit::InitializeCustomHeader(void) const
 {
-       std::unique_ptr<char[]> pLang(vconf_get_str(VCONFKEY_LANGSET));
-       std::unique_ptr<char[]> pRegion(vconf_get_str(VCONFKEY_LANGSET));
+       char pAcceptLang[6] = {0, };
+       char* pLangSet = vconf_get_str(VCONFKEY_LANGSET);
        const char name[] = "Accept-Language";
-       String value(L"");
 
-       if (pLang.get())
+       if (pLangSet && strlen(pLangSet))
        {
-               if (pRegion.get())
-               {
-                       value.Append(pLang.get());
-                       value.Append(L"_");
-                       value.Append(pRegion.get());
-               }
-               else
+               strncpy(pAcceptLang, pLangSet, 2);
+
+               char *pRawData = strchr(pLangSet, '_');
+               if (pRawData && strlen(pLangSet) >= 5)
                {
-                       value.Append(pLang.get());
+                       strcat(pAcceptLang, "-");
+                       strncat(pAcceptLang, pRawData + 1, 2);
                }
        }
        else
        {
-               value = L"en";
+               strcat(pAcceptLang, "en");
        }
+       free(pLangSet);
 
-       std::unique_ptr<char[]> pValue(_StringConverter::CopyToCharArrayN(value));
-       SysTryReturnVoidResult(NID_WEB_CTRL, pValue.get(), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
-       ewk_view_custom_header_add(__pWebFrame, name, pValue.get());
+       ewk_view_custom_header_add(__pWebFrame, name, pAcceptLang);
 }
 
 
index e4cee87..5c3a239 100755 (executable)
@@ -47,13 +47,6 @@ class VisualElementSurface;
 namespace Tizen { namespace Web { namespace Controls
 {
 
-_OSP_EXPORT_ extern const wchar_t CUSTOM_DB_DIRECTORY_PATH[];
-_OSP_EXPORT_ extern const wchar_t USER_CONFIRM_DB_NAME[];
-_OSP_EXPORT_ extern const wchar_t GEOLOCATION_TABLE_NAME[];
-_OSP_EXPORT_ extern const wchar_t CUSTOM_PROTOCOL_TABLE_NAME[];
-_OSP_EXPORT_ extern const wchar_t CUSTOM_CONTENT_TABLE_NAME[];
-_OSP_EXPORT_ extern const wchar_t CERTIFICATE_TABLE_NAME[];
-
 class _EflWebkit
        : public Tizen::Base::Object
 {
@@ -66,6 +59,8 @@ public:
 
        Evas_Object* GetWebEvasObject(void) const;
 
+       result SetProxyAddress(char* pProxy) const;
+
 //     result GetPixelBufferFromEvasObject(const Evas_Object* source, Tizen::Graphics::BufferInfo& bufferInfo);
 
 private:
@@ -73,12 +68,6 @@ private:
 
        result SetWebConfiguration(void) const;
 
-       result SetProxyAddress(void) const;
-
-       result CreateResourceDirectory(void) const;
-
-       result InitializeCustomDb(void) const;
-
        void InitializeCustomHeader(void) const;
 
        _EflWebkit& operator =(const _EflWebkit&);
index 7f069ca..c0452da 100755 (executable)
@@ -28,7 +28,7 @@
 #include <FIoDbEnumerator.h>
 #include <FWebCtrlGeolocationPermissionManager.h>
 #include <FIo_DatabaseImpl.h>
-#include "FWebCtrl_EflWebkit.h"
+#include "FWebCtrl_WebManager.h"
 #include "FWebCtrl_GeolocationPermissionManagerImpl.h"
 
 
index 93419bd..b2b3675 100755 (executable)
@@ -90,27 +90,6 @@ _TapGestureState::OnLongPressGestureDetected(_TouchLongPressGestureDetector& ges
        SysAssertf(pSmartData, "Failed to get webkit smart data.");
        pSmartData->api->gesture_move(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
 
-       //To delete magnifier
-       _TouchManager* pTouchManager = _TouchManager::GetInstance();
-       SysAssertf(pTouchManager, "Failed to get touch manager.");
-
-       Point absPoint(_CoordinateSystemUtils::ConvertToInteger(pTouchManager->GetPosition(pTouchManager->GetCurrentPointId())));
-
-       Ewk_Touch_Point* pPoint = static_cast< Ewk_Touch_Point* >(calloc(1, sizeof(Ewk_Touch_Point)));
-       pPoint->id = 0;
-       pPoint->x = absPoint.x;
-       pPoint->y = absPoint.y;
-       pPoint->state = EVAS_TOUCH_POINT_CANCEL;
-
-       Eina_List* pPointList = null;
-       pPointList = eina_list_append(pPointList, pPoint);
-
-       ewk_view_feed_touch_event(__pWebCore->GetWebNativeNode(), EWK_TOUCH_CANCEL, pPointList, null);
-
-       void* pData = null;
-       EINA_LIST_FREE(pPointList, pData)
-       free(pData);
-
        __longPressed = true;
 
        return true;
@@ -160,6 +139,11 @@ _TapGestureState::OnTouchMoved(const _Control& source, const _TouchInfo& touchIn
 
        __pWebCore->ChangeGesture(WEB_GESTURE_TYPE_PANNING);
 
+       if (!_WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsScrollEnabled())
+       {
+               return false;
+       }
+
        return true;
 }
 
@@ -167,63 +151,55 @@ _TapGestureState::OnTouchMoved(const _Control& source, const _TouchInfo& touchIn
 bool
 _TapGestureState::OnTouchReleased(const _Control& source, const _TouchInfo& touchInfo)
 {
-       if (__pWebCore->Contains(__pressedPosition))
+       if (!__pWebCore->Contains(__pressedPosition))
        {
-               Evas_Object* pView = __pWebCore->GetWebNativeNode();
-               Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(__pressedPosition)));
-
-               if (__longPressed)
-               {
-                       Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pView, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
-                       SysTryReturn(NID_WEB_CTRL, pEwkHitTest, true, E_SYSTEM, "Failed to get hit test.");
-
-                       String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
-
-                       Eina_Hash* pAttrHash = ewk_hit_test_attribute_hash_get(pEwkHitTest);
-                       char* pValue = reinterpret_cast< char* >(eina_hash_find(pAttrHash, "contenteditable"));
-                       if (tagName.Equals(L"INPUT", false) || tagName.Equals(L"TEXTAREA", false) || pValue)
-                       {
-                               Eina_Rectangle leftHandle;
-                               Eina_Rectangle rightHandle;
+               return OnTouchCanceled(source, touchInfo);
+       }
+       
+       Evas_Object* pView = __pWebCore->GetWebNativeNode();
+       Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(__pressedPosition)));
 
-                               ewk_view_text_selection_range_get(pView, &leftHandle, &rightHandle);
-                               if (((rightHandle.x + rightHandle.w) == 0) && ((rightHandle.y + rightHandle.h) == 0))
-                               {
-                                       Ewk_Event_Gesture gestureEvent;
+       if (__longPressed)
+       {
+               Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pView, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+               SysTryReturn(NID_WEB_CTRL, pEwkHitTest, true, E_SYSTEM, "Failed to get hit test.");
 
-                                       SetGestureEvent(gestureEvent, EWK_GESTURE_LONG_PRESS, absPoint, Point(0, 0), 0.0, 1);
+               String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
 
-                                       const Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(__pWebCore->GetWebNativeNode()));
-                                       SysAssertf(pSmartData, "Failed to get webkit smart data.");
-                                       pSmartData->api->gesture_end(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
-                               }
-                       }
-               }
-               else
+               Eina_Hash* pAttrHash = ewk_hit_test_attribute_hash_get(pEwkHitTest);
+               char* pValue = reinterpret_cast< char* >(eina_hash_find(pAttrHash, "contenteditable"));
+               if (tagName.Equals(L"INPUT", false) || tagName.Equals(L"TEXTAREA", false) || pValue)
                {
-                       Ewk_Event_Gesture gestureEvent;
-                       int touchCount = 1;
-                       if (__doubleTapped)
-                       {
-                               touchCount = 2;
-                       }
+                       Eina_Rectangle leftHandle;
+                       Eina_Rectangle rightHandle;
 
-                       SetGestureEvent(gestureEvent, EWK_GESTURE_TAP, absPoint, Point(0, 0), 0.0, touchCount);
+                       ewk_view_text_selection_range_get(pView, &leftHandle, &rightHandle);
+                       if (((rightHandle.x + rightHandle.w) == 0) && ((rightHandle.y + rightHandle.h) == 0))
+                       {
+                               Ewk_Event_Gesture gestureEvent;
 
-                       const Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(__pWebCore->GetWebNativeNode()));
-                       SysAssertf(pSmartData, "Failed to get webkit smart data.");
-                       pSmartData->api->gesture_end(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
-               }
+                               SetGestureEvent(gestureEvent, EWK_GESTURE_LONG_PRESS, absPoint, Point(0, 0), 0.0, 1);
 
-               String selectedText(ewk_view_text_selection_text_get(pView));
-               if (selectedText.GetLength() > 0)
-               {
-                       evas_object_smart_callback_call(pView, "text,selected", NULL);
+                               const Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(pView));
+                               SysAssertf(pSmartData, "Failed to get webkit smart data.");
+                               pSmartData->api->gesture_end(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
+                       }
                }
        }
        else
        {
-               OnTouchCanceled(source, touchInfo);
+               Ewk_Event_Gesture gestureEvent;
+               int touchCount = 1;
+               if (__doubleTapped)
+               {
+                       touchCount = 2;
+               }
+
+               SetGestureEvent(gestureEvent, EWK_GESTURE_TAP, absPoint, Point(0, 0), 0.0, touchCount);
+
+               const Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(pView));
+               SysAssertf(pSmartData, "Failed to get webkit smart data.");
+               pSmartData->api->gesture_end(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
        }
 
        return true;
@@ -247,9 +223,6 @@ _TapGestureState::OnTouchCanceled(const _Control& source, const _TouchInfo& touc
 
 _PanningGestureState::_PanningGestureState(_Web* pWeb)
        : __pWebCore(pWeb)
-       , __textSelected(false)
-       , __textChanged(false)
-       , __selectedText(L"")
 {
 }
 
@@ -259,22 +232,6 @@ _PanningGestureState::~_PanningGestureState(void)
 }
 
 
-void
-_PanningGestureState::InitializeTextSelectionStatus(void)
-{
-       __selectedText = String(ewk_view_text_selection_text_get(__pWebCore->GetWebNativeNode()));
-       if (__selectedText.GetLength() > 0)
-       {
-               __textSelected = true;
-       }
-       else
-       {
-               __textSelected = false;
-       }
-       __textChanged = false;
-}
-
-
 bool
 _PanningGestureState::OnTouchPressed(const _Control& source, const _TouchInfo& touchInfo)
 {
@@ -285,26 +242,19 @@ _PanningGestureState::OnTouchPressed(const _Control& source, const _TouchInfo& t
 bool
 _PanningGestureState::OnTouchMoved(const _Control& source, const _TouchInfo& touchInfo)
 {
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       if (_WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsScrollEnabled())
+       if (!_WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsScrollEnabled())
        {
-               Ewk_Event_Gesture gestureEvent;
-               Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(touchInfo.GetCurrentPosition())));
+               return false;
+       }
 
-               SetGestureEvent(gestureEvent, EWK_GESTURE_PAN, absPoint, Point(0, 0), 0.0, 0);
+       Ewk_Event_Gesture gestureEvent;
+       Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(touchInfo.GetCurrentPosition())));
 
-               const Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(pView));
-               SysAssertf(pSmartData, "Failed to get webkit smart data.");
-               pSmartData->api->gesture_move(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
-       }
+       SetGestureEvent(gestureEvent, EWK_GESTURE_PAN, absPoint, Point(0, 0), 0.0, 0);
 
-       if (__textSelected && !__textChanged)
-       {
-               if (!__selectedText.Equals(String(ewk_view_text_selection_text_get(pView))))
-               {
-                       __textChanged = true;
-               }
-       }
+       const Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(__pWebCore->GetWebNativeNode()));
+       SysAssertf(pSmartData, "Failed to get webkit smart data.");
+       pSmartData->api->gesture_move(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
 
        return true;
 }
@@ -318,16 +268,10 @@ _PanningGestureState::OnTouchReleased(const _Control& source, const _TouchInfo&
 
        SetGestureEvent(gestureEvent, EWK_GESTURE_PAN, absPoint, Point(0, 0), 0.0, 0);
 
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       const Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(pView));
+       const Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(__pWebCore->GetWebNativeNode()));
        SysAssertf(pSmartData, "Failed to get webkit smart data.");
        pSmartData->api->gesture_end(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
 
-       if (__textChanged)
-       {
-               evas_object_smart_callback_call(pView, "text,selected", NULL);
-       }
-
        __pWebCore->ChangeGesture(WEB_GESTURE_TYPE_TAP);
 
        return true;
@@ -358,11 +302,14 @@ _FlickGestureState::OnFlickGestureDetected(_TouchFlickGestureDetector& gesture)
 {
        __pWebCore->ChangeGesture(WEB_GESTURE_TYPE_FLICK);
 
-       int duration = gesture.GetDuration();
-       gesture.GetDistance(__velocity.x, __velocity.y);
+       if (_WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsScrollEnabled())
+       {
+               int duration = gesture.GetDuration();
+               gesture.GetDistance(__velocity.x, __velocity.y);
 
-       __velocity.x = (__velocity.x * FLICK_SCROLL_WEIGHT) / duration;
-       __velocity.y = (__velocity.y * FLICK_SCROLL_WEIGHT) / duration;
+               __velocity.x = (__velocity.x * FLICK_SCROLL_WEIGHT) / duration;
+               __velocity.y = (__velocity.y * FLICK_SCROLL_WEIGHT) / duration;
+       }
 
        return true;
 }
@@ -394,9 +341,12 @@ _FlickGestureState::OnTouchReleased(const _Control& source, const _TouchInfo& to
        SysAssertf(pSmartData, "Failed to get webkit smart data.");
        pSmartData->api->gesture_end(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
 
-       SetGestureEvent(gestureEvent, EWK_GESTURE_FLICK, absPoint, __velocity, 0.0, 0);
+       if (_WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsScrollEnabled())
+       {
+               SetGestureEvent(gestureEvent, EWK_GESTURE_FLICK, absPoint, __velocity, 0.0, 0);
 
-       pSmartData->api->gesture_start(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
+               pSmartData->api->gesture_start(const_cast< Ewk_View_Smart_Data* >(pSmartData), &gestureEvent);
+       }
 
        __pWebCore->ChangeGesture(WEB_GESTURE_TYPE_TAP);
 
index 0758025..9c77f24 100755 (executable)
@@ -85,8 +85,6 @@ public:
        
        virtual ~_PanningGestureState(void);
 
-       void InitializeTextSelectionStatus(void);
-
        virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
 
        virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchinfo);
@@ -97,12 +95,6 @@ public:
 
 private:
        _Web* __pWebCore;
-
-       bool __textSelected;
-
-       bool __textChanged;
-
-       Tizen::Base::String __selectedText;
 };
 
 class _FlickGestureState
index 0826358..1b83049 100755 (executable)
 #include <FUiCtrlEditDate.h>
 #include <FUiCtrlEditTime.h>
 #include <FUiCtrlLabel.h>
+#include <FUiCtrlPanel.h>
 #include <FUiIActionEventListener.h>
 #include <FUiKeyEventInfo.h>
 #include <FUiLayout.h>
 #include <FUiVerticalBoxLayout.h>
 #include <FWebCtrlAuthenticationChallenge.h>
 #include <FSys_SystemResource.h>
+#include <FUi_ControlManager.h>
 #include <FUi_ResourceManager.h>
 #include "FWebCtrl_WebImpl.h"
 #include "FWebCtrl_InputPickerPopup.h"
 
 
 using namespace Tizen::Base;
+using namespace Tizen::Base::Collection;
 using namespace Tizen::Graphics;
 using namespace Tizen::Locales;
 using namespace Tizen::System;
@@ -58,15 +61,14 @@ static const int DATE_POPUP_BUTTON_WIDTH = 250;
 
 
 _InputPickerPopup::_InputPickerPopup(void)
-       : __pPopup(null)
-       , __pEditDate(null)
+       : __pEditDate(null)
        , __pEditTime(null)
        , __pSelectionBtn(null)
-       , __modal(0)
-       , __isModal(false)
+       , __pColorPicker(null)
+       , __pButtonPanel(null)
        , __popupHeight(0)
        , __popupWidth(0)
-       , __btnHeight(0)
+       , __panelHeight(0)
        , __inputType(EWK_INPUT_TYPE_TIME)
 {
 }
@@ -74,7 +76,7 @@ _InputPickerPopup::_InputPickerPopup(void)
 
 _InputPickerPopup::~_InputPickerPopup(void)
 {
-       if (__isModal == true)
+       if (IsModalPopup())
        {
                HidePopup();
        }
@@ -90,6 +92,7 @@ _InputPickerPopup::Construct(const String& strDate, Ewk_Input_Type inputType, Ti
        int dateHeight = 0;
        int dateWidth = 0;
        int sideMargin = 0;
+       int internalGap = 0;
        DateTime inputDateTime;
 
        __inputPickerMode = INPUT_MODE_DATE;
@@ -104,14 +107,19 @@ _InputPickerPopup::Construct(const String& strDate, Ewk_Input_Type inputType, Ti
 
        _ControlOrientation orientation = _CONTROL_ORIENTATION_PORTRAIT;
 
+       _WebPopupData* pPopupData = _WebPopup::GetPopupData();
+       SysTryReturn(NID_WEB_CTRL, pPopupData, r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
+
        GET_SHAPE_CONFIG(EDITDATE::WIDTH, orientation, dateWidth);
        GET_SHAPE_CONFIG(EDITDATE::HEIGHT, orientation, dateHeight);
        GET_SHAPE_CONFIG(POPUP::SIDE_BORDER, orientation, sideMargin);
        GET_SHAPE_CONFIG(MESSAGEBOX::DEFAULT_WIDTH, orientation, __popupWidth);
        GET_SHAPE_CONFIG(MESSAGEBOX::MIN_HEIGHT, orientation, __popupHeight);
-       GET_SHAPE_CONFIG(MESSAGEBOX::BUTTON_HEIGHT, orientation, __btnHeight);
+       GET_SHAPE_CONFIG(MESSAGEBOX::BUTTON_INTERNAL_GAP, orientation, internalGap);
+
+       __panelHeight = pPopupData->panelHeight;
 
-       __popupWidth -= 2*sideMargin;
+       __popupWidth += sideMargin;
 
        std::unique_ptr<EditDate> pEditDate(new (std::nothrow) EditDate());
        SysTryReturnResult(NID_WEB_CTRL, pEditDate.get(), E_OUT_OF_MEMORY, "Memory Allocation Failed.");
@@ -119,20 +127,25 @@ _InputPickerPopup::Construct(const String& strDate, Ewk_Input_Type inputType, Ti
        std::unique_ptr<EditTime> pEditTime(new (std::nothrow) EditTime());
        SysTryReturnResult(NID_WEB_CTRL, pEditTime.get(), E_OUT_OF_MEMORY, "Memory Allocation Failed.");
 
+       int space = dateHeight/4;
+
+       _SystemResource* pSysResource = _SystemResource::GetInstance();
+       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
+
        switch (__inputType)
        {
        case EWK_INPUT_TYPE_TIME :
 
-               __popupHeight = __popupHeight + dateHeight + __btnHeight;
+               __popupHeight = dateHeight + space + __panelHeight;
                r = CreatePopup();
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-               __pPopup->SetTitleText("Select time");
+               SetTitleText(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_HEADER_SET_TIME"));
 
                r = pEditTime->Construct(Point(0, 0), L"Time (Default format) :");
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-               r = __pPopup->AddControl(*pEditTime);
+               r = AddControl(*pEditTime);
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
                pEditTime->SetTime(inputDateTime);
                __pEditTime = pEditTime.release();
@@ -143,11 +156,11 @@ _InputPickerPopup::Construct(const String& strDate, Ewk_Input_Type inputType, Ti
 
        case EWK_INPUT_TYPE_DATETIMELOCAL :
 
-               __popupHeight = __popupHeight + 2*dateHeight + __btnHeight;
+               __popupHeight = 2*dateHeight + space + __panelHeight + internalGap;
                r = CreatePopup();
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-               __pPopup->SetTitleText("Select datetime");
+               SetTitleText(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_HEADER_SET_DATE_AND_TIME_ABB"));
 
                r = pEditDate->Construct(Point(0, 0), L"Date (Default format) :");
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -155,13 +168,13 @@ _InputPickerPopup::Construct(const String& strDate, Ewk_Input_Type inputType, Ti
                r = pEditTime->Construct(Point(0, 0), L"Time (Default format) :");
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-               r = __pPopup->AddControl(*pEditTime);
+               r = AddControl(*pEditTime);
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
                pEditTime->SetTime(inputDateTime);
                __pEditTime = pEditTime.release();
 
-               r = __pPopup->AddControl(*pEditDate);
+               r = AddControl(*pEditDate);
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
                pEditDate->SetDate(inputDateTime);
@@ -176,15 +189,15 @@ _InputPickerPopup::Construct(const String& strDate, Ewk_Input_Type inputType, Ti
                //fall through
        case EWK_INPUT_TYPE_MONTH :
 
-               __popupHeight = __popupHeight + dateHeight + __btnHeight;
+               __popupHeight = dateHeight + space + __panelHeight;
                r = CreatePopup();
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-               __pPopup->SetTitleText("Select date");
+               SetTitleText(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_HEADER_SET_DATE"));
 
                r = pEditDate->Construct(Point(0, 0), L"Date (Default format) :");
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-               r = __pPopup->AddControl(*pEditDate);
+               r = AddControl(*pEditDate);
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
                pEditDate->SetDate(inputDateTime);
@@ -197,28 +210,47 @@ _InputPickerPopup::Construct(const String& strDate, Ewk_Input_Type inputType, Ti
                return r;
        }
 
-       r = AddButton(ID_BUTTON_INPUT_DATE_SELECTION);
+       __pButtonPanel = CreateAndAddPanel();
+       SysTryReturn(NID_WEB_CTRL, __pButtonPanel, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+       ArrayList idList;
+       r = idList.Construct();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       ArrayList titleList;
+       r = titleList.Construct();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       idList.Add(*(new Integer(ID_BUTTON_INPUT_DATE_SELECTION)));
+
+       titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_OK"))));
+
+       r = CreateAndAddButtons(idList, titleList, __pButtonPanel);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       __pPopup->SetPropagatedKeyEventListener(this);
-       
-       std::unique_ptr<VerticalBoxLayout> pLayout(dynamic_cast< VerticalBoxLayout* >(__pPopup->GetLayoutN()));
+       SetPropagatedKeyEventListener(this);
+
+       std::unique_ptr<VerticalBoxLayout> pLayout(dynamic_cast< VerticalBoxLayout* >(GetLayoutN()));
        SysTryReturnResult(NID_WEB_CTRL, pLayout.get(), E_OUT_OF_MEMORY, "Memory Allocation Failed.");
 
        if (__pEditDate)
        {
+               __pEditDate->SetSize(__popupWidth,__pEditDate->GetSize().height);
                pLayout->SetHorizontalAlignment(*__pEditDate, LAYOUT_HORIZONTAL_ALIGN_LEFT);
                pLayout->SetSpacing(*__pEditDate, sideMargin);
        }
 
        if (__pEditTime)
        {
+               __pEditTime->SetSize(__popupWidth,__pEditTime->GetSize().height);
                pLayout->SetHorizontalAlignment(*__pEditTime, LAYOUT_HORIZONTAL_ALIGN_LEFT);
                pLayout->SetSpacing(*__pEditTime, sideMargin);
        }
 
-       pLayout->SetHorizontalAlignment(*__pSelectionBtn, LAYOUT_HORIZONTAL_ALIGN_CENTER);
-       pLayout->SetSpacing(*__pSelectionBtn, sideMargin);
+       if (__pButtonPanel)
+       {
+               pLayout->SetSpacing(*__pButtonPanel, space);
+       }
 
        return E_SUCCESS;
 }
@@ -233,12 +265,11 @@ _InputPickerPopup::Construct(const Color& color, Tizen::Web::Controls::_WebImpl*
 
        _ControlOrientation orientation = _ControlManager::GetInstance()->GetOrientation();
 
-       CalculateColorPickerPopupSize(orientation);
-
-       r = CreatePopup();
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       _SystemResource* pSysResource = _SystemResource::GetInstance();
+       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
 
-       __pPopup->SetTitleText("Select color");
+       _WebPopupData* pPopupData = _WebPopup::GetPopupData();
+       SysTryReturn(NID_WEB_CTRL, pPopupData, r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
 
        std::unique_ptr<ColorPicker> pColorPicker(new (std::nothrow) ColorPicker());
        SysTryReturnResult(NID_WEB_CTRL, pColorPicker.get(), E_OUT_OF_MEMORY, "Memory Allocation Failed.");
@@ -248,25 +279,46 @@ _InputPickerPopup::Construct(const Color& color, Tizen::Web::Controls::_WebImpl*
 
        pColorPicker->SetColor(color);
 
-       __pPopup->SetPropagatedKeyEventListener(this);
-       r = __pPopup->AddControl(*pColorPicker);
+       CalculateColorPickerPopupSize(orientation);
+
+       r = CreatePopup();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       SetTitleText(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_HEADER_SET_COLOUR"));
+
+       SetPropagatedKeyEventListener(this);
+
+       r = AddControl(*pColorPicker);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
        __pColorPicker = pColorPicker.release();
-       r = AddButton(ID_BUTTON_INPUT_COLOR_SELECTION);
+
+       __pButtonPanel = CreateAndAddPanel();
+       SysTryReturn(NID_WEB_CTRL, __pButtonPanel, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+
+       ArrayList idList;
+       r = idList.Construct();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       ArrayList titleList;
+       r = titleList.Construct();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       idList.Add(*(new Integer(ID_BUTTON_INPUT_COLOR_SELECTION)));
+       titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_OK"))));
+
+       r = CreateAndAddButtons(idList, titleList, __pButtonPanel);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       std::unique_ptr<VerticalBoxLayout> pLayout(dynamic_cast< VerticalBoxLayout* >(__pPopup->GetLayoutN()));
+       std::unique_ptr<VerticalBoxLayout> pLayout(dynamic_cast< VerticalBoxLayout* >(GetLayoutN()));
        SysTryReturnResult(NID_WEB_CTRL, pLayout.get(), E_OUT_OF_MEMORY, "Memory Allocation Failed.");
 
        pLayout->SetHorizontalAlignment(*__pColorPicker, LAYOUT_HORIZONTAL_ALIGN_LEFT);
-       pLayout->SetHorizontalAlignment(*__pSelectionBtn, LAYOUT_HORIZONTAL_ALIGN_CENTER);
 
        int sideMargin = 0;
        GET_SHAPE_CONFIG(POPUP::SIDE_BORDER, orientation, sideMargin);
 
        pLayout->SetSpacing(*__pColorPicker, sideMargin);
-       pLayout->SetSpacing(*__pSelectionBtn, sideMargin);
 
        return E_SUCCESS;
 
@@ -278,17 +330,16 @@ _InputPickerPopup::CalculateColorPickerPopupSize(_ControlOrientation orientation
 {
        int sideMargin = 0;
        Dimension dim;
+       _WebPopupData* pPopupData = _WebPopup::GetPopupData();
 
        GET_SHAPE_CONFIG(POPUP::SIDE_BORDER, orientation, sideMargin);
-       GET_SHAPE_CONFIG(MESSAGEBOX::DEFAULT_WIDTH, orientation, __popupWidth);
-       GET_SHAPE_CONFIG(MESSAGEBOX::MIN_HEIGHT, orientation, __popupHeight);
-       GET_SHAPE_CONFIG(MESSAGEBOX::BUTTON_HEIGHT, orientation, __btnHeight);
 
+       __panelHeight = pPopupData->panelHeight;
        GET_DIMENSION_CONFIG(COLORPICKER::DEFAULT_SIZE, orientation, dim);
 
        dim.width += sideMargin;
        __popupWidth = dim.width;
-       __popupHeight = __popupHeight + dim.height + __btnHeight;
+       __popupHeight = dim.height + __panelHeight;
 }
 
 
@@ -296,51 +347,14 @@ result
 _InputPickerPopup::CreatePopup(void)
 {
        result r = E_SUCCESS;
+       bool hasTitle = true;
 
-       VerticalBoxLayout layout;
-       r = layout.Construct(VERTICAL_DIRECTION_DOWNWARD);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       std::unique_ptr<Popup> pPopup(new (std::nothrow) Popup());
-       SysTryReturnResult(NID_WEB_CTRL, pPopup.get(), E_OUT_OF_MEMORY, "Memory Allocation Failed.");
-
-       r = pPopup->Construct(layout, layout, true, Dimension(__popupWidth, __popupHeight));
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       __pPopup = std::move(pPopup);
-
-       return E_SUCCESS;
-}
-
-
-result
-_InputPickerPopup::AddButton(_InputPickerButtonId buttonId)
-{
-       result r = E_SUCCESS;
-
-       String buttonStr;
-
-       _SystemResource* pSysResource = _SystemResource::GetInstance();
-       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
-
-       buttonStr = pSysResource->GetString("sys_string", "IDS_TPLATFORM_BUTTON_OK");
-
-       std::unique_ptr<Button> pSelectionBtn(new (std::nothrow) Button());
-       SysTryReturnResult(NID_WEB_CTRL, pSelectionBtn.get(), E_OUT_OF_MEMORY, "Memory Allocation Failed.");
-
-       r = pSelectionBtn->Construct(Rectangle(0, 0, DATE_POPUP_BUTTON_WIDTH, __btnHeight), buttonStr);
+       r = _WebPopup::Construct(hasTitle, Dimension(__popupWidth, __popupHeight));
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       pSelectionBtn->SetActionId(buttonId);
-       __pPopup->AddControl(*pSelectionBtn);
-       pSelectionBtn->AddActionEventListener(*this);
-
-       __pSelectionBtn =  pSelectionBtn.release();
-
        return E_SUCCESS;
 }
 
-
 void
 _InputPickerPopup::OnActionPerformed(const Control& source, int actionId)
 {
@@ -378,9 +392,11 @@ _InputPickerPopup::ChangeLayout(_ControlOrientation orientation)
 
        int x = 0;
        int y = 0;
+       _WebPopupData* __pWebPopupData = _WebPopup::GetPopupData();
        Dimension screenRect = _ControlManager::GetInstance()->GetScreenSize();
 
        CalculateColorPickerPopupSize(orientation);
+       __popupHeight += __pWebPopupData->titleHeight;
 
        if (orientation == _CONTROL_ORIENTATION_PORTRAIT)
        {
@@ -393,9 +409,25 @@ _InputPickerPopup::ChangeLayout(_ControlOrientation orientation)
                y = (screenRect.width - __popupHeight) / 2;
        }
 
-       r = __pPopup->SetBounds(Rectangle(x, y, __popupWidth, __popupHeight));
+       r = SetBounds(Rectangle(x, y, __popupWidth, __popupHeight));
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = __pButtonPanel->SetSize(__popupWidth, __popupHeight);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
+       int buttonMargin;
+       int idCount = 1;
+       GET_SHAPE_CONFIG(MESSAGEBOX::BUTTON_SIDE_MARGIN_01, _CONTROL_ORIENTATION_PORTRAIT, buttonMargin);
+
+       int buttonWidth = (__popupWidth - buttonMargin*(idCount+1)) / idCount;
+       int buttonTopMargin = (__pWebPopupData->panelHeight - __pWebPopupData->btnDim.height)/2;
+
+       if (__pButtonPanel->GetControl(0))
+       {
+               r = (__pButtonPanel->GetControl(0))->SetBounds(Rectangle(buttonMargin, buttonTopMargin, buttonWidth, __pWebPopupData->btnDim.height));
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       }
+
        return E_SUCCESS;
 }
 
@@ -475,39 +507,6 @@ _InputPickerPopup::UpdateColor(void)
 }
 
 
-result
-_InputPickerPopup::ShowPopup(void)
-{
-       result r = E_SUCCESS;
-
-       r = __pPopup->SetShowState(true);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       __isModal = true;
-
-       r = __pPopup->DoModal(__modal);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       return E_SUCCESS;
-}
-
-
-result
-_InputPickerPopup::HidePopup(void)
-{
-       result r = E_SUCCESS;
-
-       r = __pPopup->SetShowState(false);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       __isModal = false;
-
-       r = __pPopup->EndModal(__modal);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       return E_SUCCESS;
-}
-
 bool
 _InputPickerPopup::OnKeyPressed(Control& source, const KeyEventInfo& keyEventInfo)
 {
index 93151ce..462a942 100755 (executable)
@@ -32,6 +32,7 @@
 #include <FUiIActionEventListener.h>
 #include <FUiIPropagatedKeyEventListener.h>
 #include <FUi_ControlManager.h>
+#include "FWebCtrl_WebPopup.h"
 
 namespace Tizen { namespace Ui
 {
@@ -62,8 +63,7 @@ enum _InputPickerMode
 
 
 class _InputPickerPopup
-       : public Tizen::Base::Object
-       , virtual public Tizen::Ui::IActionEventListener
+       : public _WebPopup
        , public Tizen::Ui::IPropagatedKeyEventListener
 {
 
@@ -89,9 +89,6 @@ public:
        Tizen::Base::String GetDate(void) const;
        Tizen::Graphics::Color GetColor(void) const;
 
-       result ShowPopup(void);
-       result HidePopup(void);
-
        virtual bool  OnKeyPressed (Tizen::Ui::Control &source, const Tizen::Ui::KeyEventInfo &keyEventInfo);
        virtual bool  OnKeyReleased (Tizen::Ui::Control &source, const Tizen::Ui::KeyEventInfo &keyEventInfo);
        virtual bool  OnPreviewKeyPressed (Tizen::Ui::Control &source, const Tizen::Ui::KeyEventInfo &keyEventInfo);
@@ -105,8 +102,6 @@ private:
 
        result CreatePopup(void);
 
-       result AddButton(_InputPickerButtonId buttonId);
-
        void CalculateColorPickerPopupSize(Tizen::Ui::_ControlOrientation orientation);
 
        result UpdateDate(void);
@@ -118,18 +113,15 @@ private:
 
 private:
 
-       std::unique_ptr<Tizen::Ui::Controls::Popup> __pPopup;
        Tizen::Ui::Controls::EditDate* __pEditDate;
        Tizen::Ui::Controls::EditTime* __pEditTime;
        Tizen::Ui::Controls::Button* __pSelectionBtn;
        Tizen::Ui::Controls::ColorPicker* __pColorPicker;
-
-       int __modal;
-       bool __isModal;
+       Tizen::Ui::Controls::Panel* __pButtonPanel;
 
        int __popupHeight;
        int __popupWidth;
-       int __btnHeight;
+       int __panelHeight;
 
        Ewk_Input_Type __inputType;
        Tizen::Base::String __dateStr;
index 39f3a6c..9a6ab1a 100755 (executable)
@@ -86,7 +86,7 @@ _PromptPopup::Construct(const String& message, const String& defaultVale,  Evas_
        _WebPopupData* pPopupData = _WebPopup::GetPopupData();
        SysTryReturn(NID_WEB_CTRL, pPopupData, r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-       popupHeight = pPopupData->editDim.height + pPopupData->labelDim.height  + pPopupData->btnDim.height + (2 * pPopupData->spacePad);
+       popupHeight = pPopupData->editDim.height + pPopupData->labelDim.height + pPopupData->panelHeight + (2 * pPopupData->spacePad);
 
        r = _WebPopup::Construct(true, Dimension(pPopupData->popupDim.width, popupHeight));
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -149,8 +149,8 @@ _PromptPopup::Construct(const String& message, const String& defaultVale,  Evas_
        ArrayList titleList;
        r = titleList.Construct();
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-       titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_TPLATFORM_BUTTON_CANCEL_ABB"))));
-       titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_TPLATFORM_BUTTON_OK"))));
+       titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_CANCEL_ABB"))));
+       titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_OK"))));
 
        r = CreateAndAddButtons(idList, titleList, pButtonPanel);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -160,7 +160,6 @@ _PromptPopup::Construct(const String& message, const String& defaultVale,  Evas_
 
        pLayout->SetHorizontalAlignment(*pTmpTextBox, LAYOUT_HORIZONTAL_ALIGN_CENTER);
        pLayout->SetHorizontalAlignment(*__pEditField, LAYOUT_HORIZONTAL_ALIGN_CENTER);
-       pLayout->SetHorizontalAlignment(*pButtonPanel, LAYOUT_HORIZONTAL_ALIGN_CENTER);
 
        pLayout->SetSpacing(*__pEditField, pPopupData->spacePad);
        pLayout->SetSpacing(*pButtonPanel, pPopupData->spacePad);
index b1e8462..ac80e60 100755 (executable)
@@ -42,6 +42,7 @@
 #include <FSys_SystemResource.h>
 #include <FUi_ResourceManager.h>
 #include "FWebCtrl_SelectBox.h"
+#include "FWebCtrl_WebImpl.h"
 
 
 using namespace Tizen::Base;
@@ -151,6 +152,7 @@ _SelectBox::_SelectBox(void)
        , __pWebView(null)
        , __pToggledArray(null)
        , __url(L"")
+       , __pImpl(null)
 {
 }
 
@@ -168,7 +170,7 @@ _SelectBox::~_SelectBox(void)
 
 
 result
-_SelectBox::Construct(bool isMultiSelect, const String& title, int listCount, Evas_Object* pWebView, const String& url)
+_SelectBox::Construct(Tizen::Web::Controls::_WebImpl* pImpl, bool isMultiSelect, const String& title, int listCount, Evas_Object* pWebView, const String& url)
 {
        result r = E_SUCCESS;
        Rectangle rect;
@@ -179,6 +181,7 @@ _SelectBox::Construct(bool isMultiSelect, const String& title, int listCount, Ev
 
        __pWebView = pWebView;
        __url = const_cast< String& >(url);
+       __pImpl = pImpl;
 
        GET_SHAPE_CONFIG(CONTEXTMENU::LIST_ITEM_HEIGHT, __orientation, listItemHeight);
 
@@ -187,7 +190,7 @@ _SelectBox::Construct(bool isMultiSelect, const String& title, int listCount, Ev
        _WebPopupData* pPopupData = _WebPopup::GetPopupData();
        SysTryReturn(NID_WEB_CTRL, pPopupData, r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-       listMaxHeihgt = listCount * listItemHeight + pPopupData->btnDim.height + pPopupData->spacePad;
+       listMaxHeihgt = listCount * listItemHeight;
 
        rect.height = listMaxHeihgt;
        rect.width = pPopupData->popupDim.width;
@@ -221,42 +224,32 @@ _SelectBox::Construct(bool isMultiSelect, const String& title, int listCount, Ev
 
        __pListView = pListView.release();
 
-       Panel* pButtonPanel = CreateAndAddPanel();
-       SysTryReturn(NID_WEB_CTRL, pButtonPanel, r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
+       if (__multiSelection)
+       {
+               Panel* pButtonPanel = CreateAndAddPanel();
+               SysTryReturn(NID_WEB_CTRL, pButtonPanel, r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-       _SystemResource* pSysResource = _SystemResource::GetInstance();
-       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
+               _SystemResource* pSysResource = _SystemResource::GetInstance();
+               SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
 
-       ArrayList idList;
-       r = idList.Construct();
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+               ArrayList idList;
+               r = idList.Construct();
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       idList.Add(*(new Integer(ID_BUTTON_CANCEL)));
-       if (__multiSelection)
-       {
                idList.Add(*(new Integer(ID_BUTTON_SELECTION)));
-       }
 
-       ArrayList titleList;
-       r = titleList.Construct();
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+               ArrayList titleList;
+               r = titleList.Construct();
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_TPLATFORM_BUTTON_CANCEL_ABB"))));
-       if (__multiSelection)
-       {
-               titleList.Add(*(new String(pSysResource->GetString("sys_string", "IDS_TPLATFORM_BUTTON_OK"))));
+               titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_OK"))));
 
                __pToggledArray = eina_inarray_new(sizeof(int), 0);
                SysTryReturnResult(NID_WEB_CTRL, __pToggledArray, E_OUT_OF_MEMORY, "Memory Allocation failed.");
-       }
-
-       r = CreateAndAddButtons(idList, titleList, pButtonPanel);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       std::unique_ptr<VerticalBoxLayout> pLayout(dynamic_cast< VerticalBoxLayout* >(GetLayoutN()));
-       SysTryReturn(NID_WEB_CTRL, pLayout.get(), r = GetLastResult(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-       pLayout->SetSpacing(*pButtonPanel,  pPopupData->spacePad);
+               r = CreateAndAddButtons(idList, titleList, pButtonPanel);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       }
 
        SetPropagatedKeyEventListener(this);
        
@@ -450,6 +443,8 @@ _SelectBox::OnListViewItemStateChanged(ListView& listView, int index, int elemen
 
                result r = HidePopup();
                SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+               
+               __pImpl->SendUserEvent(ID_USER_SCRIPT_SELECTBOX_CLOSE, null);
        }
 }
 
@@ -492,6 +487,8 @@ _SelectBox::OnActionPerformed(const Control& source, int actionId)
                        SysAssertf(false, "Invalid Action ID");
                }
        }
+
+       __pImpl->SendUserEvent(ID_USER_SCRIPT_SELECTBOX_CLOSE, null);
 }
 
 bool
@@ -521,7 +518,9 @@ _SelectBox::OnKeyReleased(Control& source, const KeyEventInfo& keyEventInfo)
                        {
                                ewk_view_popup_menu_select(__pWebView, __prevIndex);
                        }
-               }               
+               }
+
+               __pImpl->SendUserEvent(ID_USER_SCRIPT_SELECTBOX_CLOSE, null);
        }
 
        return false;
index 1b2f59c..00afe24 100755 (executable)
@@ -32,6 +32,7 @@
 #include <FUiIPropagatedKeyEventListener.h>
 #include <FUi_ControlManager.h>
 #include "FWebCtrl_WebPopup.h"
+#include "FWebCtrl_WebImpl.h"
 
 namespace Tizen { namespace Graphics
 {
@@ -77,7 +78,7 @@ public:
         */
        virtual ~_SelectBox(void);
 
-       result Construct(bool isMultiSelect, const Tizen::Base::String& title, int listItemCnt, Evas_Object* pWebView = null, const Tizen::Base::String& url = L"");
+       result Construct(Tizen::Web::Controls::_WebImpl* pImpl, bool isMultiSelect, const Tizen::Base::String& title, int listItemCnt, Evas_Object* pWebView = null, const Tizen::Base::String& url = L"");
        Tizen::Base::Collection::IList* GetSelectedListN(void) const;
 
        //IListViewItemProvider
@@ -125,6 +126,7 @@ public:
 private:
        Tizen::Base::Collection::ArrayList __listElementArray;
        Tizen::Ui::Controls::ListView* __pListView;
+       Tizen::Web::Controls::_WebImpl* __pImpl;
        bool __multiSelection;
        int __SelectedIndex;
        int __prevIndex;
index e5f6c11..95ea782 100755 (executable)
@@ -25,6 +25,7 @@
 #include <FBaseSysLog.h>
 #include <FBaseUtilUri.h>
 #include <FGrpDimension.h>
+#include <FGrpFont.h>
 #include <FGrpRectangle.h>
 #include <FIoDbEnumerator.h>
 #include <FIoDbStatement.h>
 #include <FUiCtrlButton.h>
 #include <FUiCtrlLabel.h>
 #include <FUiCtrlPanel.h>
+#include <FUiCtrlScrollPanel.h>
 #include <FUiKeyEventInfo.h>
 #include <FUiLayout.h>
 #include <FUiVerticalBoxLayout.h>
+#include <FGrp_TextTextObject.h>
+#include <FGrp_TextTextSimple.h>
 #include <FIo_DatabaseImpl.h>
 #include <FSys_SystemResource.h>
 #include <FUi_ControlManager.h>
 #include <FUi_ResourceManager.h>
-#include "FWebCtrl_EflWebkit.h"
+#include "FWebCtrl_WebManager.h"
 #include "FWebCtrl_UserConfirmPopup.h"
 #include "FWebCtrl_Utility.h"
 #include "FWebCtrl_WebImpl.h"
@@ -49,6 +53,7 @@ using namespace Tizen::Base;
 using namespace Tizen::Base::Collection;
 using namespace Tizen::Base::Utility;
 using namespace Tizen::Graphics;
+using namespace Tizen::Graphics::_Text;
 using namespace Tizen::Io;
 using namespace Tizen::Security::Cert;
 using namespace Tizen::System;
@@ -60,10 +65,14 @@ namespace Tizen { namespace Web { namespace Controls
 {
 
 
+static const int TEXT_SIZE_ADJUST = 1;
+
+
 _UserConfirmPopup::_UserConfirmPopup(void)
        : __pUserPolicyData(null)
        , __userConfirmMode(USER_CONFIRM_USERMEDIA)
        , __pCheckButton(null)
+       , __isUserActionNeeded(false)
        , __sync(false)
        , __pImpl(null)
 {
@@ -72,10 +81,10 @@ _UserConfirmPopup::_UserConfirmPopup(void)
 
 _UserConfirmPopup::~_UserConfirmPopup(void)
 {
-       
-       if (IsModalPopup())
+       if (__isUserActionNeeded == true)
        {
                HandleUserAction(EINA_FALSE);
+               __isUserActionNeeded = false;
        }
 }
 
@@ -98,8 +107,10 @@ _UserConfirmPopup::Construct(_UserConfirmMode userConfirmMode, void* pEventInfo,
        __userConfirmMode = userConfirmMode;
        __sync = sync;
 
+       __isUserActionNeeded = true;
+
        bool hasTitle = true;
-       int popupMaxHeight = 2*pPopupData->labelDim.height + pPopupData->btnDim.height + 2*pPopupData->sideMargin;
+       int popupMaxHeight = 2*pPopupData->labelDim.height + pPopupData->panelHeight;
 
        __pImpl = pImpl;
        SysAssertf(__pImpl != null, "Failed to get _WebImpl");
@@ -111,7 +122,6 @@ _UserConfirmPopup::Construct(_UserConfirmMode userConfirmMode, void* pEventInfo,
 
        if (__userConfirmMode == USER_SCRIPT_ALERT)
        {
-               popupMaxHeight -=  2*pPopupData->sideMargin;
                hasTitle = false;
        }
 
@@ -123,15 +133,6 @@ _UserConfirmPopup::Construct(_UserConfirmMode userConfirmMode, void* pEventInfo,
                SetTitleText(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_HEADER_SECURITY_WARNING_ABB"));
        }
 
-       Rectangle rect(0, 0, 0, 0);
-
-       //label
-       rect.height = 2*pPopupData->labelDim.height;
-       rect.width = pPopupData->labelDim.width;
-
-       std::unique_ptr<Label> pLabel(new (std::nothrow) Label());
-       SysTryReturnResult(NID_WEB_CTRL, pLabel.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
-
        String message = L"";
        if (userConfirmMode >= USER_SCRIPT_ALERT && userConfirmMode <= USER_CONFIRM_INDEXED_DB_QUOTA_EXCEDED)
        {
@@ -141,15 +142,89 @@ _UserConfirmPopup::Construct(_UserConfirmMode userConfirmMode, void* pEventInfo,
        {
                message = GetMessageFromPolicy();
        }
+
+       Rectangle rect(0, 0, 0, 0);
+
+       //label
+       rect.height = 2*pPopupData->labelDim.height;
+       rect.width = pPopupData->labelDim.width;
+
+       //With the font of label and width of label, required height is calculated
+       //      using textobject. TEXT_SIZE_ADJUST is used to increase font size and get bigger height
+       //      as the accurate height is not fitting text in some cases.
+       Font font;
+       r = font.Construct(FONT_STYLE_PLAIN, pPopupData->labelFontSize + TEXT_SIZE_ADJUST);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       std::unique_ptr<TextObject> pTextObject(new (std::nothrow) TextObject());
+       SysTryReturnResult(NID_WEB_CTRL, pTextObject.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+       r = pTextObject->Construct();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       std::unique_ptr<TextSimple> pSimpleText(new (std::nothrow) TextSimple(message.GetPointer(), message.GetLength(), TEXT_ELEMENT_SOURCE_TYPE_EXTERNAL, &font));
+       SysTryReturnResult(NID_WEB_CTRL, pSimpleText.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+       r = pTextObject->AppendElement(*pSimpleText);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       pSimpleText.release();
+
+       r = pTextObject->SetWrap(TEXT_OBJECT_WRAP_TYPE_WORD);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = pTextObject->SetBounds(rect);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = pTextObject->SetFont(&font, 0, message.GetLength());
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = pTextObject->Compose();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       int labelHeight = pTextObject->GetTotalHeight();
+
+       std::unique_ptr<Label> pLabel(new (std::nothrow) Label());
+       SysTryReturnResult(NID_WEB_CTRL, pLabel.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
        r = pLabel->Construct(rect, message);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
        pLabel->SetTextConfig(pPopupData->labelFontSize, LABEL_TEXT_STYLE_NORMAL);
 
-       r = AddControl(*pLabel);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       Control* pInfoLabel = null;
+
+       if (rect.height < labelHeight)
+       {
+               //message text is bigger than label, scroll is created to accomodate it.
+               std::unique_ptr<ScrollPanel> pScrollPanel(new (std::nothrow) ScrollPanel());
+               SysTryReturnResult(NID_WEB_CTRL, pScrollPanel.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+               r = pScrollPanel->Construct(rect);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+               r = AddControl(*pScrollPanel);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+               ScrollPanel* pSPanel = pScrollPanel.release();
+
+               r = pLabel->SetSize(Dimension(rect.width, labelHeight));
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+               r = pSPanel->AddControl(*pLabel);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+               pLabel.release();
+               pInfoLabel = pSPanel;
+       }
+       else
+       {
+               r = AddControl(*pLabel);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+               pInfoLabel = pLabel.release();
+       }
 
-       Label* pInfoLabel = pLabel.release();
        //checkbutton
        if (__userConfirmMode == USER_CONFIRM_GEOLOCATION)
        {
@@ -184,6 +259,13 @@ _UserConfirmPopup::Construct(_UserConfirmMode userConfirmMode, void* pEventInfo,
                idList.Add(*(new Integer(ID_BUTTON_USER_ALLOW)));
                titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_OK"))));
        }
+       else if (userConfirmMode == USER_BEFORE_UNLOAD_CONFIRM)
+       {
+               idList.Add(*(new Integer(ID_BUTTON_USER_CANCEL)));
+               idList.Add(*(new Integer(ID_BUTTON_USER_ALLOW)));
+               titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_LEAVE"))));
+               titleList.Add(*(new String(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BUTTON_STAY"))));
+       }
        else
        {
                idList.Add(*(new Integer(ID_BUTTON_USER_CANCEL)));
@@ -203,12 +285,6 @@ _UserConfirmPopup::Construct(_UserConfirmMode userConfirmMode, void* pEventInfo,
        {
                pLayout->SetHorizontalAlignment(*__pCheckButton, LAYOUT_HORIZONTAL_ALIGN_CENTER);
        }
-       pLayout->SetHorizontalAlignment(*pButtonPanel, LAYOUT_HORIZONTAL_ALIGN_CENTER);
-
-       if ( __userConfirmMode != USER_SCRIPT_ALERT )
-       {
-               pLayout->SetSpacing(*pButtonPanel, 2*pPopupData->sideMargin);
-       }
 
        SetPropagatedKeyEventListener(this);
        return E_SUCCESS;
@@ -269,6 +345,11 @@ _UserConfirmPopup::OnActionPerformed(const Control& source, int actionId)
                        __pImpl->SendUserEvent(ID_USER_SCRIPT_CONFIRM_CLOSE, null);
                        break;
                }
+               case USER_BEFORE_UNLOAD_CONFIRM:
+               {
+                       __pImpl->SendUserEvent(ID_USER_BEFORE_UNLOAD_CONFIRM_CLOSE, null);
+                       break;
+               }
                default:
                        SysAssert(false);
                }
@@ -389,6 +470,12 @@ CATCH:
                ewk_view_javascript_confirm_reply(pView, allow);
                break;
        }
+       case USER_BEFORE_UNLOAD_CONFIRM:
+       {
+               Evas_Object* pView = reinterpret_cast< Evas_Object* >(__pUserPolicyData);
+               ewk_view_before_unload_confirm_panel_reply(pView, !allow);
+               break;
+       }
        case USER_CONFIRM_APP_CACHE:
        {
                Evas_Object *pObj = reinterpret_cast< Evas_Object* >(__pUserPolicyData);
@@ -416,6 +503,7 @@ CATCH:
        default:
                SysAssert(false);
        }
+       __isUserActionNeeded = false;
 }
 
 
@@ -561,6 +649,11 @@ _UserConfirmPopup::OnKeyReleased(Control& source, const KeyEventInfo& keyEventIn
                        __pImpl->SendUserEvent(ID_USER_SCRIPT_CONFIRM_CLOSE, null);
                        break;
                }
+               case USER_BEFORE_UNLOAD_CONFIRM:
+               {
+                       __pImpl->SendUserEvent(ID_USER_BEFORE_UNLOAD_CONFIRM_CLOSE, null);
+                       break;
+               }
                case USER_PROTOCOL_HANDLER:
                case USER_CONTENT_HANDLER:
                case USER_CONFIRM_APP_CACHE:
index 09b71aa..0e8c70c 100755 (executable)
@@ -21,6 +21,7 @@
  *
  * The file contains the definition of _Web class.
  */
+#include <Ecore_X.h>
 #include <Elementary.h>
 #include <memory>
 #include <FBaseByteBuffer.h>
@@ -61,7 +62,7 @@ using namespace Tizen::Ui;
 using namespace Tizen::Ui::Animations;
 
 
-namespace
+namespace Tizen { namespace Web { namespace Controls
 {
 
 
@@ -279,13 +280,6 @@ _WebAccessibilityFocusHandler::OnMoveFocus(const Tizen::Graphics::Point& point)
 }
 
 
-}
-
-
-namespace Tizen { namespace Web { namespace Controls
-{
-
-
 void
 OnEdgeLeft(void* pUserData, Evas_Object* pView, void* pEventInfo)
 {
@@ -339,11 +333,16 @@ _Web::_Web(void)
        , __pPanningGestureHandler(null)
        , __pFlickGestureHandler(null)
        , __pPinchGestureHandler(null)
+       , __pWebAccessibilityListener(null)
+       , __pWebAccessibilityFocusHandler(null)
        , __gestureType(WEB_GESTURE_TYPE_TAP)
        , __edgeType(WEB_EDGE_NONE)
+       , __focus(false)
        , __pTextElement(null)
        , __previousTouchedPosition(0.0f, 0.0f)
        , __isFullScreenEntered(false)
+       , __isRotated(false)
+       , __touchPressed(false)
 {
        SetBackgroundColor(Color(0, 0, 0, 0));
 }
@@ -351,12 +350,14 @@ _Web::_Web(void)
 
 _Web::~_Web(void)
 {
-       _UiEventManager* pManager = _UiEventManager::GetInstance();
-       SysAssertf(pManager, "Failed to get ui evnet manager.");
-
-       pManager->RemoveKeyEventListener(*this);
-
        RemoveGestureListener();
+
+       _AccessibilityContainer* pContainer = GetAccessibilityContainer();
+       if (pContainer)
+       {
+               pContainer->RemoveListener(*dynamic_cast<_IAccessibilityListener*>(__pWebAccessibilityListener.get()));
+               pContainer->SetFocusHandler(null);
+       }
 }
 
 
@@ -381,11 +382,6 @@ _Web::CreateWebN(void)
        r = pWeb->InitializeGestureStates();
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       _UiEventManager* pManager = _UiEventManager::GetInstance();
-       SysAssertf(pManager, "Failed to get ui evnet manager.");
-
-       pManager->AddKeyEventListener(*pWeb.get());
-
        return pWeb.release();
 }
 
@@ -551,15 +547,19 @@ _Web::InitializeWebNativeNode(void)
        pContainer->AddElement(*__pTextElement);
        pContainer->Activate(true);
 
-       _WebAccessibilityListener* pListener = new (std::nothrow) _WebAccessibilityListener(GetWebNativeNode());
+       std::unique_ptr<_WebAccessibilityListener> pListener(new (std::nothrow) _WebAccessibilityListener(GetWebNativeNode()));
        SysTryReturn(NID_WEB_CTRL, pListener, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
 
-       pContainer->AddListener(*dynamic_cast<_IAccessibilityListener*>(pListener));
+       __pWebAccessibilityListener = std::move(pListener);
 
-       _WebAccessibilityFocusHandler* pFocusHandler = new (std::nothrow) _WebAccessibilityFocusHandler(GetWebNativeNode());
+       pContainer->AddListener(*dynamic_cast<_IAccessibilityListener*>(__pWebAccessibilityListener.get()));
+
+       std::unique_ptr<_WebAccessibilityFocusHandler> pFocusHandler(new (std::nothrow) _WebAccessibilityFocusHandler(GetWebNativeNode()));
        SysTryReturn(NID_WEB_CTRL, pFocusHandler, E_OUT_OF_MEMORY, E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
 
-       pContainer->SetFocusHandler(dynamic_cast<_IAccessibilityFocusHandler*>(pFocusHandler));
+       __pWebAccessibilityFocusHandler = std::move(pFocusHandler);
+
+       pContainer->SetFocusHandler(dynamic_cast<_IAccessibilityFocusHandler*>(__pWebAccessibilityFocusHandler.get()));
 
        return E_SUCCESS;
 }
@@ -612,6 +612,20 @@ _Web::GetSetting(void) const
 }
 
 
+_EflWebkit*
+_Web::GetEflWebkit(void) const
+{
+       return __pEflWebkit.get();
+}
+
+
+FloatPoint
+_Web::GetTouchPosition(void) const
+{
+       return __previousTouchedPosition;
+}
+
+
 result
 _Web::OnAttaching(const _Control* pParent)
 {
@@ -633,7 +647,7 @@ _Web::OnBoundsChanging(const Rectangle& bounds)
        _ICoordinateSystemTransformer* pXformer = _CoordinateSystem::GetInstance()->GetTransformer();
        SysTryReturnResult(NID_WEB_CTRL, pXformer, E_SYSTEM, "[%s] A system error has been occurred. Failed to get coordinate transformer.", GetErrorMessage(E_SYSTEM));
 
-       if (__pEflWebkit.get())
+       if (__pEflWebkit.get() && __isRotated == false)
        {
                evas_object_move(__pEflWebkit->GetWebEvasObject(), pXformer->TransformHorizontal(absoluteBounds.x - webBounds.x + bounds.x), pXformer->TransformVertical(absoluteBounds.y - webBounds.y + bounds.y));
                evas_object_resize(__pEflWebkit->GetWebEvasObject(), pXformer->TransformHorizontal(bounds.width), pXformer->TransformVertical(bounds.height));
@@ -644,6 +658,20 @@ _Web::OnBoundsChanging(const Rectangle& bounds)
 
 
 void
+_Web::OnBoundsChanged(void)
+{
+       __isRotated = false;
+}
+
+
+void
+_Web::OnChangeLayout(_ControlOrientation orientation)
+{
+       __isRotated = true;
+}
+
+
+void
 _Web::ChangeGesture(_WebGestureType type)
 {
        switch (type)
@@ -706,7 +734,7 @@ _Web::SetEdgeReachedEvent(_WebEdgeType type)
 bool
 _Web::OnTouchPressed(const _Control& source, const _TouchInfo& touchInfo)
 {
-       evas_object_focus_set(GetWebNativeNode(), EINA_TRUE);
+       __touchPressed = true;
 
        if (__pEflWebkit.get())
        {
@@ -723,86 +751,182 @@ _Web::OnTouchPressed(const _Control& source, const _TouchInfo& touchInfo)
 
 
 bool
-_Web::OnTouchMoved(const _Control& source, const _TouchInfo& touchInfo)
+_Web::CanOutOfEdgeLeft(float scrollDistanceX, int pageDistance)
 {
-       if (__pEflWebkit.get())
+       if (scrollDistanceX < 0.0f)
        {
-               if (__gestureType == WEB_GESTURE_TYPE_TAP)
-               {
-                       __pPanningGestureHandler->InitializeTextSelectionStatus();
-               }
+               __edgeType &= ~WEB_EDGE_RIGHT;
 
-               SendTouchEventForJavaScript(touchInfo);
+               return false;
+       }
+       else if (scrollDistanceX > 0.0f && pageDistance != 0)
+       {
+               __edgeType &= ~WEB_EDGE_LEFT;
+       }
 
-               __pGestureHandler->OnTouchMoved(source, touchInfo);
+       return true;
+}
 
-               float scrollDistanceX = __previousTouchedPosition.x - touchInfo.GetCurrentPosition().x;
-               float scrollDistanceY = __previousTouchedPosition.y - touchInfo.GetCurrentPosition().y;
-               __previousTouchedPosition = touchInfo.GetCurrentPosition();
 
-               if (__edgeType !=  WEB_EDGE_NONE && __gestureType == WEB_GESTURE_TYPE_PANNING)
+bool
+_Web::CanOutOfEdgeRight(float scrollDistanceX, int pageDistance)
+{
+       if (scrollDistanceX > 0.0f)
+       {
+               __edgeType &= ~WEB_EDGE_LEFT;
+
+               return false;
+       }
+       else if (scrollDistanceX < 0.0f &&  pageDistance != 0)
+       {
+               __edgeType &= ~WEB_EDGE_RIGHT;
+       }
+
+       return true;
+}
+
+
+bool
+_Web::CanOutOfEdgeTop(float scrollDistanceY, int pageDistance)
+{
+       if (scrollDistanceY < 0.0f)
+       {
+               __edgeType &= ~WEB_EDGE_BOTTOM;
+
+               return false;
+       }
+       else if (scrollDistanceY > 0.0f && pageDistance != 0)
+       {
+               __edgeType &= ~WEB_EDGE_TOP;
+       }
+
+       return true;
+}
+
+
+bool
+_Web::CanOutOfEdgeBottom(float scrollDistanceY, int pageDistance)
+{
+       if (scrollDistanceY > 0.0f)
+       {
+               __edgeType &= ~WEB_EDGE_TOP;
+
+               return false;
+       }
+       else if (scrollDistanceY < 0.0f && pageDistance != 0)
+       {
+               __edgeType &= ~WEB_EDGE_BOTTOM;
+       }
+
+       return true;
+}
+
+
+bool
+_Web::CanConsumeTouchMoved(float scrollDistanceX, float scrollDistanceY)
+{
+       if (__edgeType ==  WEB_EDGE_NONE)
+       {
+               return true;
+       }
+
+       bool ret = true;
+
+       int scrollWidth = 0;
+       int scrollHeight = 0;
+       ewk_view_scroll_size_get(GetWebNativeNode(), &scrollWidth, &scrollHeight);
+
+       int scrollX = 0;
+       int scrollY = 0;
+       ewk_view_scroll_pos_get(GetWebNativeNode(), &scrollX, &scrollY);
+
+       if (scrollWidth == 0)
+       {
+               if (__edgeType & WEB_EDGE_TOP)
                {
-                       if (_Abs(scrollDistanceY) < _Abs(scrollDistanceX))
+                       if (!CanOutOfEdgeTop(scrollDistanceY, scrollY - 0))
                        {
-                               if  (__edgeType & WEB_EDGE_LEFT)
-                               {
-                                       if (scrollDistanceX < 0)
-                                       {
-                                               __edgeType &= ~WEB_EDGE_RIGHT;
-
-                                               return false;
-                                       }
-                                       else
-                                       {
-                                               __edgeType &= ~WEB_EDGE_LEFT;
-                                       }
-                               }
-                               else if  (__edgeType & WEB_EDGE_RIGHT)
-                               {
-                                       if (scrollDistanceX > 0)
-                                       {
-                                               __edgeType &= ~WEB_EDGE_LEFT;
-
-                                               return false;
-                                       }
-                                       else
-                                       {
-                                               __edgeType &= ~WEB_EDGE_RIGHT;
-                                       }
-                               }
+                               return false;
                        }
-                       else if (_Abs(scrollDistanceY) > _Abs(scrollDistanceX))
+               }
+               else if (__edgeType & WEB_EDGE_BOTTOM)
+               {
+                       if (!CanOutOfEdgeBottom(scrollDistanceY, scrollY - scrollHeight))
                        {
-                               if  (__edgeType & WEB_EDGE_TOP)
-                               {
-                                       if (scrollDistanceY < 0)
-                                       {
-                                               __edgeType &= ~WEB_EDGE_BOTTOM;
-
-                                               return false;
-                                       }
-                                       else
-                                       {
-                                               __edgeType &= ~WEB_EDGE_TOP;
-                                       }
-                               }
-                               else if  (__edgeType & WEB_EDGE_BOTTOM)
-                               {
-                                       if (scrollDistanceY > 0)
-                                       {
-                                               __edgeType &= ~WEB_EDGE_TOP;
-
-                                               return false;
-                                       }
-                                       else
-                                       {
-                                               __edgeType &= ~WEB_EDGE_BOTTOM;
-                                       }
-                               }
+                               return false;
                        }
                }
+       }
 
-               return true;
+       if (scrollHeight == 0)
+       {
+               if (__edgeType & WEB_EDGE_LEFT)
+               {
+                       if (!CanOutOfEdgeLeft(scrollDistanceX, scrollX - 0))
+                       {
+                               return false;
+                       }
+               }
+               else if  (__edgeType & WEB_EDGE_RIGHT)
+               {
+                       if (!CanOutOfEdgeRight(scrollDistanceX, scrollX - scrollWidth))
+                       {
+                               return false;
+                       }
+               }
+       }
+
+       if (scrollWidth > 0 && scrollHeight > 0)
+       {
+               if  ((__edgeType & WEB_EDGE_LEFT) && (__edgeType & WEB_EDGE_TOP))
+               {
+                       if (!CanOutOfEdgeLeft(scrollDistanceX, scrollX - 0) || !CanOutOfEdgeTop(scrollDistanceY, scrollY - 0))
+                       {
+                               return false;
+                       }
+               }
+               else if  ((__edgeType & WEB_EDGE_LEFT) && (__edgeType & WEB_EDGE_BOTTOM))
+               {
+                       if (!CanOutOfEdgeLeft(scrollDistanceX, scrollX - 0) || !CanOutOfEdgeBottom(scrollDistanceY, scrollY - scrollHeight))
+                       {
+                               return false;
+                       }
+               }
+               else if  ((__edgeType & WEB_EDGE_RIGHT) && (__edgeType & WEB_EDGE_TOP))
+               {
+                       if (!CanOutOfEdgeRight(scrollDistanceX, scrollX - scrollWidth) || !CanOutOfEdgeTop(scrollDistanceY, scrollY - 0))
+                       {
+                               return false;
+                       }
+               }
+               else if  ((__edgeType & WEB_EDGE_RIGHT) && (__edgeType & WEB_EDGE_BOTTOM))
+               {
+                       if (!CanOutOfEdgeRight(scrollDistanceX, scrollX - scrollWidth) || !CanOutOfEdgeBottom(scrollDistanceY, scrollY - scrollHeight))
+                       {
+                               return false;
+                       }
+               }
+       }
+
+       return true;
+}
+
+
+bool
+_Web::OnTouchMoved(const _Control& source, const _TouchInfo& touchInfo)
+{
+       if (__pEflWebkit.get())
+       {
+               SendTouchEventForJavaScript(touchInfo);
+
+               float scrollDistanceX = __previousTouchedPosition.x - touchInfo.GetCurrentPosition().x;
+               float scrollDistanceY = __previousTouchedPosition.y - touchInfo.GetCurrentPosition().y;
+               __previousTouchedPosition = touchInfo.GetCurrentPosition();
+
+               if (CanConsumeTouchMoved(scrollDistanceX, scrollDistanceY))
+               {
+                       return __pGestureHandler->OnTouchMoved(source, touchInfo);
+               }
        }
 
        return false;
@@ -812,6 +936,8 @@ _Web::OnTouchMoved(const _Control& source, const _TouchInfo& touchInfo)
 bool
 _Web::OnTouchReleased(const _Control& source, const _TouchInfo& touchInfo)
 {
+       __touchPressed = false;
+
        SetFocused();
 
        if (__pEflWebkit.get())
@@ -839,30 +965,6 @@ _Web::OnTouchCanceled(const _Control& source, const _TouchInfo& touchInfo)
 }
 
 
-void
-_Web::OnTouchPressHandled(const _Control& control)
-{
-}
-
-
-void
-_Web::OnTouchReleaseHandled(const _Control& control)
-{
-}
-
-
-void
-_Web::OnTouchMoveHandled(const _Control& control)
-{
-}
-
-
-void
-_Web::OnTouchCancelHandled(const _Control& control)
-{
-}
-
-
 bool
 _Web::OnLongPressGestureDetected(_TouchLongPressGestureDetector& gesture)
 {
@@ -871,14 +973,14 @@ _Web::OnLongPressGestureDetected(_TouchLongPressGestureDetector& gesture)
                return __pTapGestureHandler->OnLongPressGestureDetected(gesture);
        }
 
-       return true;
+       return false;
 }
 
 
 bool
 _Web::OnLongPressGestureCanceled(_TouchLongPressGestureDetector& gesture)
 {
-       return true;
+       return false;
 }
 
 
@@ -890,33 +992,33 @@ _Web::OnTapGestureDetected(_TouchTapGestureDetector& gesture)
                return __pTapGestureHandler->OnTapGestureDetected(gesture);
        }
 
-       return true;
+       return false;
 }
 
 
 bool
 _Web::OnTapGestureCanceled(_TouchTapGestureDetector& gesture)
 {
-       return true;
+       return false;
 }
 
 
 bool
 _Web::OnFlickGestureDetected(_TouchFlickGestureDetector& gesture)
 {
-       if (__pEflWebkit.get() && _WebSettingImpl::GetInstance(__pWebSetting.get())->IsScrollEnabled())
+       if (__pEflWebkit.get())
        {
                return __pFlickGestureHandler->OnFlickGestureDetected(gesture);
        }
 
-       return true;
+       return false;
 }
 
 
 bool
 _Web::OnFlickGestureCanceled(_TouchFlickGestureDetector& gesture)
 {
-       return true;
+       return false;
 }
 
 
@@ -928,7 +1030,7 @@ _Web::OnPinchGestureStarted(Tizen::Ui::_TouchPinchGestureDetector& gesture)
                return __pPinchGestureHandler->OnPinchGestureStarted(gesture);
        }
 
-       return true;
+       return false;
 }
 
 
@@ -940,7 +1042,7 @@ _Web::OnPinchGestureChanged(Tizen::Ui::_TouchPinchGestureDetector& gesture)
                return __pPinchGestureHandler->OnPinchGestureChanged(gesture);
        }
 
-       return true;
+       return false;
 }
 
 
@@ -952,14 +1054,14 @@ _Web::OnPinchGestureFinished(Tizen::Ui::_TouchPinchGestureDetector& gesture)
                return __pPinchGestureHandler->OnPinchGestureFinished(gesture);
        }
 
-       return true;
+       return false;
 }
 
 
 bool
 _Web::OnPinchGestureCanceled(Tizen::Ui::_TouchPinchGestureDetector& gesture)
 {
-       return true;
+       return false;
 }
 
 
@@ -1163,6 +1265,58 @@ _Web::SetFullScreenEntered(bool isFullScreenEntered)
 }
 
 
+void
+_Web::SetFocusEnd(bool focus)
+{
+       __focus = focus;
+}
+
+
+bool
+_Web::IsFocusEnd(void) const
+{
+       return __focus;
+}
+
+
+bool
+_Web::OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo)
+{
+       Ecore_X_Window rootWindow = ecore_x_window_root_first_get();
+       Ecore_X_Atom keyboardExist = ecore_x_atom_get("X External Keyboard Exist");
+       unsigned int keyboardNumber = 0;
+       int ret = ecore_x_window_prop_card32_get(rootWindow, keyboardExist, &keyboardNumber, 1);
+       if (keyboardNumber == 0)
+       {
+               return false;
+       }
+
+       _KeyCode keyCode = keyInfo.GetKeyCode();
+
+       if (IsFocusEnd() == true)
+       {
+               SetFocusEnd(false);
+               evas_object_focus_set(GetWebNativeNode(), EINA_FALSE);
+               return false;
+       }
+
+       switch(keyCode)
+       {
+       case _KEY_UP:
+       case _KEY_DOWN:
+               evas_object_focus_set(GetWebNativeNode(), EINA_FALSE);
+               return false;
+               break;
+       default:
+               break;
+       }
+
+       evas_object_focus_set(GetWebNativeNode(), EINA_TRUE);
+
+       return true;
+}
+
+
 bool
 _Web::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
 {
@@ -1182,4 +1336,44 @@ _Web::OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo)
 }
 
 
+void
+_Web::OnDrawFocus(void)
+{
+}
+
+
+bool
+_Web::OnFocusLost(const _Control& source)
+{
+       _Control::OnFocusLost(*this);
+
+       if (__touchPressed == true)
+       {
+               _TouchManager* pTouchManager = _TouchManager::GetInstance();
+               SysAssertf(pTouchManager, "Failed to get touch manager.");
+
+               Point absPoint(_CoordinateSystemUtils::ConvertToInteger(pTouchManager->GetPosition(pTouchManager->GetCurrentPointId())));
+
+               Ewk_Touch_Point* pPoint = static_cast< Ewk_Touch_Point* >(calloc(1, sizeof(Ewk_Touch_Point)));
+               pPoint->id = 0;
+               pPoint->x = absPoint.x;
+               pPoint->y = absPoint.y;
+               pPoint->state = EVAS_TOUCH_POINT_CANCEL;
+
+               Eina_List* pPointList = null;
+               pPointList = eina_list_append(pPointList, pPoint);
+
+               ewk_view_feed_touch_event(GetWebNativeNode(), EWK_TOUCH_CANCEL, pPointList, null);
+
+               void* pData = null;
+               EINA_LIST_FREE(pPointList, pData)
+               free(pData);
+
+               __touchPressed = false;
+       }
+
+       return false;
+}
+
+
 }}} // Tizen::Web::Controls
index 44fab11..5dc1c4a 100755 (executable)
@@ -61,6 +61,8 @@ class _TapGestureState;
 class _PanningGestureState;
 class _FlickGestureState;
 class _PinchGestureState;
+class _WebAccessibilityListener;
+class _WebAccessibilityFocusHandler;
 class WebSetting;
 
 enum _WebGestureType
@@ -113,23 +115,33 @@ public:
 
        WebSetting* GetSetting(void) const;
 
+       _EflWebkit* GetEflWebkit(void) const;
+
+       Tizen::Graphics::FloatPoint GetTouchPosition(void) const;
+
        void SetEdgeReachedEvent(_WebEdgeType type);
 
        void SetFullScreenEntered(bool isFullScreenEntered);
 
+       void SetFocusEnd(bool focus);
+
+       bool IsFocusEnd(void) const;
+
+       bool CanOutOfEdgeLeft(float scrollDistanceX, int pageDistance);
+       bool CanOutOfEdgeRight(float scrollDistanceX, int pageDistance);
+       bool CanOutOfEdgeTop(float scrollDistanceY, int pageDistance);
+       bool CanOutOfEdgeBottom(float scrollDistanceY, int pageDistance);
+       bool CanConsumeTouchMoved(float scrollDistanceX, float scrollDistanceY);
        virtual result OnAttaching(const _Control* pParent);
        virtual result OnBoundsChanging(const Tizen::Graphics::Rectangle& bounds);
+       virtual void OnBoundsChanged(void);
+       virtual void OnChangeLayout(Tizen::Ui::_ControlOrientation orientation);
 
        virtual bool OnTouchPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchInfo);
        virtual bool OnTouchReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchInfo);
        virtual bool OnTouchMoved(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchInfo);
        virtual bool OnTouchCanceled(const Tizen::Ui::_Control& source, const Tizen::Ui::_TouchInfo& touchInfo);
 
-       virtual void OnTouchPressHandled(const Tizen::Ui::_Control& control);
-       virtual void OnTouchReleaseHandled(const Tizen::Ui::_Control& control);
-       virtual void OnTouchMoveHandled(const Tizen::Ui::_Control& control);
-       virtual void OnTouchCancelHandled(const Tizen::Ui::_Control& control);
-
        virtual bool OnPinchGestureStarted(Tizen::Ui::_TouchPinchGestureDetector& gesture);
        virtual bool OnPinchGestureChanged(Tizen::Ui::_TouchPinchGestureDetector& gesture);
        virtual bool OnPinchGestureFinished(Tizen::Ui::_TouchPinchGestureDetector& gesture);
@@ -149,7 +161,10 @@ public:
        virtual bool OnCaptureAcquire(Tizen::Graphics::BufferInfo& output);
        virtual void OnCaptureReleased(void) {};
 
+       virtual bool OnKeyPressed(const Tizen::Ui::_Control& source, const Tizen::Ui::_KeyInfo& keyInfo);
        virtual bool OnKeyReleased(const Tizen::Ui::_Control& source, const Tizen::Ui::_KeyInfo& keyInfo);
+       virtual void OnDrawFocus(void);
+       virtual bool OnFocusLost(const Tizen::Ui::_Control& source);
 
 private:
        _Web(const _Web& value);
@@ -193,15 +208,25 @@ private:
 
        std::unique_ptr<_PinchGestureState> __pPinchGestureHandler;
 
+       std::unique_ptr<_WebAccessibilityListener> __pWebAccessibilityListener;
+
+       std::unique_ptr<_WebAccessibilityFocusHandler> __pWebAccessibilityFocusHandler;
+
        _WebGestureType __gestureType;
 
        int __edgeType;
 
+       bool __focus;
+
        Tizen::Ui::_AccessibilityElement* __pTextElement;
 
        Tizen::Graphics::FloatPoint __previousTouchedPosition;
 
        bool __isFullScreenEntered;
+
+       bool __isRotated;
+
+       bool __touchPressed;
 }; // _Web
 
 }}} // Tizen::Web::Controls
index 525baeb..4e0d109 100755 (executable)
@@ -37,7 +37,6 @@
 #include <FBaseRtMutexGuard.h>
 #include <FBaseSysLog.h>
 #include <FBaseUtilUri.h>
-#include <FCntDownloadRequest.h>
 #include <FGrpColor.h>
 #include <FGrpPoint.h>
 #include <FGrpRectangle.h>
 #include <FApp_AppInfo.h>
 #include <FApp_AppManagerImpl.h>
 #include <FBase_StringConverter.h>
-#include <FCnt_DownloadManagerImpl.h>
-#include <FCnt_ContentManagerImpl.h>
 #include <FGrp_CoordinateSystem.h>
 #include <FGrp_Screen.h>
 #include <FIo_DatabaseImpl.h>
 #include <FIo_NormalFile.h>
+#include <FSys_SettingInfoImpl.h>
 #include <FSys_SystemResource.h>
-#include <FSys_VibratorImpl.h>
 #include <FUi_Control.h>
 #include <FUi_CoordinateSystemUtils.h>
 #include <FUi_EcoreEvasMgr.h>
 #include <FUi_EcoreEvas.h>
+#include <FUi_ResourceManager.h>
 #include <FUi_ResourceSizeInfo.h>
 #include <FUi_Window.h>
 #include <FUiAnim_EflNode.h>
@@ -149,24 +147,7 @@ static const int MAX_TEXT_MATCH = pow(2, 31) - 1;
 
 static const int PORTRAIT_KEYPAD_HEIGHT = 444;
 static const int LANDSCAPE_KEYPAD_HEIGHT = 316;
-static const int DEFAULT_LIST_ITEM_COUNT = 4;
-
-
-Eina_Bool
-AddHttpHeaderData(const Eina_Hash* pHash, const void* pKey, void* pValue, void* pUserData)
-{
-       result r = E_SUCCESS;
-
-       String key(reinterpret_cast< const char* >(pKey));
-       String value(reinterpret_cast< char* >(pValue));
-
-       SysLog(NID_WEB_CTRL, "The current value of key is %ls, value is %ls", key.GetPointer(), value.GetPointer());
-
-       r = reinterpret_cast< HttpHeader* >(pUserData)->AddField(key, value);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       return EINA_TRUE;
-}
+static const int DEFAULT_LIST_ITEM_COUNT = 5;
 
 
 Eina_Bool
@@ -178,7 +159,7 @@ AddHttpAttributeData(const Eina_Hash* pHash, const void* pKey, void* pValue, voi
        std::unique_ptr<String> pAttrValue(new (std::nothrow) String(reinterpret_cast< char* >(pValue)));
        SysTryReturn(NID_WEB_CTRL, pAttrKey.get() && pAttrValue.get(), EINA_FALSE, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
 
-       SysLog(NID_WEB_CTRL, "The current value of key is %ls, value is %ls", pAttrKey->GetPointer(), pAttrValue->GetPointer());
+       SysSecureLog(NID_WEB_CTRL, "The current value of key is %ls, value is %ls", pAttrKey->GetPointer(), pAttrValue->GetPointer());
 
        r = reinterpret_cast< HashMap* >(pUserData)->Add(*pAttrKey, *pAttrValue);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -394,7 +375,26 @@ OnScriptPromptRequested(Evas_Object* pView, const char* pMessage, const char* pD
 CATCH:
        ewk_view_javascript_prompt_reply(pView, null);
 
-       return EINA_FALSE;
+       return EINA_TRUE;
+}
+
+
+Eina_Bool
+_WebImpl::OnBeforeUnloadConfirmRequested(Evas_Object* pView, const char* pMessage, void* pUserData)
+{
+       _WebImpl* pWebImpl = reinterpret_cast< _WebImpl* >(pUserData);
+       SysAssertf(pWebImpl, "Failed to request");
+       result r = E_SUCCESS;
+
+       String msg(pMessage);
+
+       r = pWebImpl->ShowUserConfirmPopupAsync(USER_BEFORE_UNLOAD_CONFIRM, pView, msg);
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+       return EINA_TRUE;
+
+CATCH:
+       ewk_view_javascript_confirm_reply(pView, EINA_FALSE);
+       return EINA_TRUE;
 }
 
 
@@ -524,14 +524,25 @@ OnApplicationCachePermissionRequested(Evas_Object* pView, Ewk_Security_Origin* p
        _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
        SysAssertf(pImpl , "Failed to request");
 
-       const char* pHostName = ewk_security_origin_host_get(pSecOrigin);
-       String msg;
-       result r = msg.Format(256, L"Allow %s to use offline application cache?", pHostName);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+       _SystemResource* pSysResource = _SystemResource::GetInstance();
+       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
 
-       r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_APP_CACHE, pView, msg);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+       result r = E_SUCCESS;
+
+       String message(L"");
+       r = message.Format(512, 
+               pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BODY_P1SS_HP2SS_IS_REQUESTING_PERMISSION_TO_STORE_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE").GetPointer(),
+               _StringConverter::CopyToCharArrayN(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_THIS_WEBPAGE")),
+               ewk_security_origin_host_get(pSecOrigin));
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
+       r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_APP_CACHE, pView, message);
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       return EINA_TRUE;
+
+CATCH:
+       ewk_view_application_cache_permission_reply(pView, EINA_FALSE);
        return EINA_TRUE;
 }
 
@@ -542,14 +553,25 @@ OnIndexedDatabaseQuotaExceeded(Evas_Object* pView, Ewk_Security_Origin* pSecOrig
        _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
        SysAssertf(pImpl , "Failed to request");
 
-       const char* pHostName = ewk_security_origin_host_get(pSecOrigin);
-       String msg;
-       result r = msg.Format(512, L"%s Used %lld of storage. Allow %s to use upto 2GB of indexed db?", pHostName, currentQuota, pHostName);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+       _SystemResource* pSysResource = _SystemResource::GetInstance();
+       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
 
-       r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_INDEXED_DB_QUOTA_EXCEDED, pView, msg);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+       result r = E_SUCCESS;
+
+       String message(L"");
+       r = message.Format(512, 
+               pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BODY_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE").GetPointer(),
+               _StringConverter::CopyToCharArrayN(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_THIS_WEBPAGE")),
+               ewk_security_origin_host_get(pSecOrigin));
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_INDEXED_DB_QUOTA_EXCEDED, pView, message);
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       return EINA_TRUE;
 
+CATCH:
+       ewk_view_exceeded_indexed_database_quota_reply(pView, EINA_FALSE);
        return EINA_TRUE;
 }
 
@@ -560,31 +582,54 @@ OnDatabaseQuotaExceeded(Evas_Object* pView, Ewk_Security_Origin* pSecOrigin, con
        _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
        SysAssertf(pImpl , "Failed to request");
 
-       const char* pHostName = ewk_security_origin_host_get(pSecOrigin);
-       String msg;
-       result r = msg.Format(512, L"Allow %s to open  %s use upto %lld  of web database?", pHostName, database_name, expectedQuota);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+       _SystemResource* pSysResource = _SystemResource::GetInstance();
+       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
 
-       r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_DB_QUOTA_EXCEDED, pView, msg);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+       result r = E_SUCCESS;
+
+       String message(L"");
+       r = message.Format(512, 
+               pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BODY_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE").GetPointer(),
+               _StringConverter::CopyToCharArrayN(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_THIS_WEBPAGE")),
+               ewk_security_origin_host_get(pSecOrigin));
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_DB_QUOTA_EXCEDED, pView, message);
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
        return EINA_TRUE;
+
+CATCH:
+       ewk_view_exceeded_database_quota_reply(pView, EINA_FALSE);
+       return EINA_TRUE;
 }
 
 
-Eina_Bool OnLocalFileSystemQuotaExceeded(Evas_Object* pView, Ewk_Security_Origin* pSecOrigin,  long long currentQuota, void* pUserData)
+Eina_Bool
+OnLocalFileSystemQuotaExceeded(Evas_Object* pView, Ewk_Security_Origin* pSecOrigin,  long long currentQuota, void* pUserData)
 {
        _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
        SysAssertf(pImpl , "Failed to request");
 
-       const char* pHostName = ewk_security_origin_host_get(pSecOrigin);
-       String msg;
-       result r = msg.Format(512, L"%s Used %lld of storgae. Allow %s to use upto 2GB of file system?", pHostName, currentQuota, pHostName);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+       _SystemResource* pSysResource = _SystemResource::GetInstance();
+       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
 
-       r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_LOCAL_FS_QUOTA_EXCEDED, pView, msg);
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, EINA_FALSE, r, "[%s] Propagating.", GetErrorMessage(r));
+       result r = E_SUCCESS;
 
+       String message(L"");
+       r = message.Format(512, 
+               pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BODY_P1SS_HP2SS_IS_ATTEMPTING_TO_STORE_A_LARGE_AMOUNT_OF_DATA_ON_YOUR_DEVICE_FOR_OFFLINE_USE").GetPointer(),
+               _StringConverter::CopyToCharArrayN(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_BR_BODY_THIS_WEBPAGE")),
+               ewk_security_origin_host_get(pSecOrigin));
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       r = pImpl->ShowUserConfirmPopup(USER_CONFIRM_LOCAL_FS_QUOTA_EXCEDED, pView, message);
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       return EINA_TRUE;
+
+CATCH:
+       ewk_view_exceeded_local_file_system_quota_reply(pView, EINA_FALSE);
        return EINA_TRUE;
 }
 
@@ -832,16 +877,12 @@ void
 OnFullScreenEntered(void* pUserData, Evas_Object* pView, void* pEventInfo)
 {
        _WebImpl* pImpl = reinterpret_cast<_WebImpl*>(pUserData);
-       bool* pIsHandleNeeded = reinterpret_cast< bool* >(pEventInfo);
        SysAssertf(pImpl, "Failed to request");
 
        _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
        SysAssertf(pWebCore, "Failed to get Web core object");
 
-       if (pIsHandleNeeded && *pIsHandleNeeded)
-       {
-               pWebCore->SetFullScreenEntered(true);
-       }
+       pWebCore->SetFullScreenEntered(true);
 }
 
 
@@ -859,6 +900,28 @@ OnFullScreenExited(void* pUserData, Evas_Object* pView, void* pEventInfo)
 
 
 void
+OnFocusDownRequested(void* pUserData, Evas_Object* pView, void* pEventInfo)
+{
+       _WebImpl* pImpl = reinterpret_cast<_WebImpl*>(pUserData);
+       SysAssertf(pImpl, "Failed to request");
+
+       _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
+       pWebCore->SetFocusEnd(true);
+}
+
+
+void
+OnFocusUpRequested(void* pUserData, Evas_Object* pView, void* pEventInfo)
+{
+       _WebImpl* pImpl = reinterpret_cast<_WebImpl*>(pUserData);
+       SysAssertf(pImpl, "Failed to request");
+
+       _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
+       pWebCore->SetFocusEnd(true);
+}
+
+
+void
 OnVibrationRequested(uint64_t duration, void* pUserData)
 {
        result r = E_SUCCESS;
@@ -891,13 +954,7 @@ OnLoadingRequested(void* pUserData, Evas_Object* pView, void* pEventInfo)
        String url(ewk_policy_decision_url_get(pPolicy));
        SysSecureLog(NID_WEB_CTRL, "The current value of url is %ls", url.GetPointer());
 
-       if (url == L"about:blank")
-       {
-               ewk_policy_decision_use(pPolicy);
-               return;
-       }
-
-       if (pImpl->GetLoadingListener() && ewk_frame_is_main_frame(ewk_policy_decision_frame_get(pPolicy))
+       if (ewk_frame_is_main_frame(ewk_policy_decision_frame_get(pPolicy))
                && !pImpl->IsRedirectRequested())
        {
                _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
@@ -911,49 +968,61 @@ OnLoadingRequested(void* pUserData, Evas_Object* pView, void* pEventInfo)
                {
                        pImpl->DisableAsyncSearch();
                }
-       
-               WebNavigationType navigationType = WEB_NAVIGATION_OTHER;
-               Ewk_Policy_Navigation_Type ewkNavigationType = ewk_policy_decision_navigation_type_get(pPolicy);
 
-               switch (ewkNavigationType)
+               ILoadingListener* pLoadingListener = pImpl->GetLoadingListener();
+               if (pLoadingListener)
                {
-               case EWK_POLICY_NAVIGATION_TYPE_LINK_CLICKED:
-                       navigationType = WEB_NAVIGATION_LINK_CLICKED;
-                       break;
-               case EWK_POLICY_NAVIGATION_TYPE_FORM_SUBMITTED:
-                       navigationType = WEB_NAVIGATION_FORM_SUBMITTED;
-                       break;
-               case EWK_POLICY_NAVIGATION_TYPE_BACK_FORWARD:
-                       navigationType = WEB_NAVIGATION_BACKFORWARD;
-                       break;
-               case EWK_POLICY_NAVIGATION_TYPE_RELOAD:
-                       navigationType = WEB_NAVIGATION_RELOAD;
-                       break;
-               case EWK_POLICY_NAVIGATION_TYPE_FORM_RESUBMITTED:
-                       navigationType = WEB_NAVIGATION_FORM_RESUBMITTED;
-                       break;
-               case EWK_POLICY_NAVIGATION_TYPE_OTHER:
-                       navigationType = WEB_NAVIGATION_OTHER;
-                       break;
-               default:
-                       SysAssert(false);
-               }
+                       WebNavigationType navigationType = WEB_NAVIGATION_OTHER;
+                       Ewk_Policy_Navigation_Type ewkNavigationType = ewk_policy_decision_navigation_type_get(pPolicy);
 
-               if (pImpl->GetLoadingListener()->OnLoadingRequested(url, navigationType))
-               {
-                       ewk_policy_decision_ignore(pPolicy);
+                       switch (ewkNavigationType)
+                       {
+                       case EWK_POLICY_NAVIGATION_TYPE_LINK_CLICKED:
+                               navigationType = WEB_NAVIGATION_LINK_CLICKED;
+                               break;
+                       case EWK_POLICY_NAVIGATION_TYPE_FORM_SUBMITTED:
+                               navigationType = WEB_NAVIGATION_FORM_SUBMITTED;
+                               break;
+                       case EWK_POLICY_NAVIGATION_TYPE_BACK_FORWARD:
+                               navigationType = WEB_NAVIGATION_BACKFORWARD;
+                               break;
+                       case EWK_POLICY_NAVIGATION_TYPE_RELOAD:
+                               navigationType = WEB_NAVIGATION_RELOAD;
+                               break;
+                       case EWK_POLICY_NAVIGATION_TYPE_FORM_RESUBMITTED:
+                               navigationType = WEB_NAVIGATION_FORM_RESUBMITTED;
+                               break;
+                       case EWK_POLICY_NAVIGATION_TYPE_OTHER:
+                               navigationType = WEB_NAVIGATION_OTHER;
+                               break;
+                       default:
+                               SysAssert(false);
+                       }
 
-                       return;
+                       if (pLoadingListener->OnLoadingRequested(url, navigationType))
+                       {
+                               ewk_policy_decision_ignore(pPolicy);
+
+                               return;
+                       }
                }
        }
 
+       if (url == L"about:blank")
+       {
+               ewk_policy_decision_use(pPolicy);
+
+               return;
+       }
+
        String currentUrl(pImpl->GetUrl());
        String redirectUrl(pImpl->GetProtocolFromUri(url,  currentUrl));
        if (redirectUrl != L"")
        {
-               pImpl->LoadUrl(redirectUrl);
                ewk_policy_decision_ignore(pPolicy);
 
+               pImpl->LoadUrl(redirectUrl);
+
                return;
        }
        
@@ -961,17 +1030,10 @@ OnLoadingRequested(void* pUserData, Evas_Object* pView, void* pEventInfo)
        uri.SetUri(url);
 
        String uriScheme(uri.GetScheme());
-       SysLog(NID_WEB_CTRL, "The current value of scheme is %ls", uriScheme.GetPointer());
+       SysSecureLog(NID_WEB_CTRL, "The current value of scheme is %ls", uriScheme.GetPointer());
 
-       if ((uriScheme != L"http") && (uriScheme != L"https") && (uriScheme != L"file"))
+       if ((uriScheme != L"http") && (uriScheme != L"https") && (uriScheme != L"file") && (uriScheme != L""))
        {
-               ewk_policy_decision_ignore(pPolicy);
-
-               if (uriScheme == L"")
-               {
-                       return;
-               }
-
                result r = E_SUCCESS;
 
                if (uriScheme == L"tel")
@@ -989,9 +1051,13 @@ OnLoadingRequested(void* pUserData, Evas_Object* pView, void* pEventInfo)
                        String operationId(L"http://tizen.org/appcontrol/operation/view");
                        r = _AppControlImpl::FindAndStart(operationId, &url, null, null, null, null);
                }
-               SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
 
-               return;
+               if (r == E_SUCCESS)
+               {
+                       ewk_policy_decision_ignore(pPolicy);
+
+                       return;
+               }
        }
 
        ewk_policy_decision_use(pPolicy);
@@ -1083,36 +1149,48 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo)
 
        result r = E_SUCCESS;
 
-       _SystemResource* pSysResource = _SystemResource::GetInstance();
-       SysAssertf(pSysResource != null, "Failed to get _SystemResource instance");
-
-       const char* pUrl = ewk_policy_decision_url_get(pPolicy);
        int code = ewk_policy_decision_response_status_code_get(pPolicy);
-       String mime(ewk_policy_decision_response_mime_get(pPolicy));
-       SysSecureLog(NID_WEB_CTRL, "url : %s, mime : %ls, code : %d", pUrl, mime.GetPointer(), code);
-
-       ILoadingListener* pLoadingListener = pImpl->GetLoadingListener();
-
        String url(ewk_policy_decision_url_get(pPolicy));
+       String mime(ewk_policy_decision_response_mime_get(pPolicy));
+       SysSecureLog(NID_WEB_CTRL, "code : %d, url : %ls, mime : %ls", code, url.GetPointer(), mime.GetPointer());
 
-       if (pLoadingListener && ewk_frame_is_main_frame(ewk_policy_decision_frame_get(pPolicy)))
+       if (ewk_frame_is_main_frame(ewk_policy_decision_frame_get(pPolicy)))
        {
-               const Eina_Hash* pHeader = ewk_policy_decision_response_headers_get(pPolicy);
-
-               DecisionPolicy policy;
-               HttpHeader httpHeader;
-
                if (code >= REDIRECTION_HEADER_GROUP && code < REDIRECTION_HEADER_GROUP + 100)
                {
                        pImpl->SetRedirectRequested(true);
-                       mime = L"";
                }
 
-               eina_hash_foreach(pHeader, AddHttpHeaderData, &httpHeader);
-               SysTryCatch(NID_WEB_CTRL, GetLastResult() == E_SUCCESS, , GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
+               ILoadingListener* pLoadingListener = pImpl->GetLoadingListener();
+               if (pLoadingListener)
+               {
+                       HttpHeader httpHeader;
+
+                       Eina_Iterator* iterator = eina_hash_iterator_tuple_new(ewk_policy_decision_response_headers_get(pPolicy));
+                       if (iterator)
+                       {
+                               Eina_Hash_Tuple *tuple = null;
+
+                               EINA_ITERATOR_FOREACH(iterator, tuple)
+                               {
+                                       String key(reinterpret_cast< const char* >(tuple->key));
+                                       String value(reinterpret_cast< char* >(tuple->data));
+
+                                       SysSecureLog(NID_WEB_CTRL, "The current value of key is %ls, value is %ls", key.GetPointer(), value.GetPointer());
+
+                                       r = httpHeader.AddField(key, value);
+                                       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, eina_iterator_free(iterator), r, "[%s] Propagating.", GetErrorMessage(r));
+                               }
 
-               policy = pLoadingListener->OnWebDataReceived(mime, httpHeader);
-               pImpl->SetPolicyDecision(policy);
+                               eina_iterator_free(iterator);
+                       }
+
+                       pImpl->SetPolicyDecision(pLoadingListener->OnWebDataReceived(mime, httpHeader));
+               }
+               else
+               {
+                       pImpl->SetPolicyDecision(WEB_DECISION_CONTINUE);
+               }
        }
 
        switch (pImpl->GetPolicyDecision())
@@ -1123,17 +1201,17 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo)
                String redirectUrl(pImpl->GetRedirectUri(url, currentUrl, mime));
                if (redirectUrl != L"")
                {
-                       pImpl->LoadUrl(redirectUrl);
                        ewk_policy_decision_ignore(pPolicy);
 
+                       pImpl->LoadUrl(redirectUrl);
+
                        return;
                }
 
-               if (pImpl->IsMimeSupported(mime) || mime == L"")
+               if (ewk_policy_decision_type_get(pPolicy) == EWK_POLICY_DECISION_USE)
                {
                        break;
                }
-               
                else
                {
                        ewk_policy_decision_ignore(pPolicy);
@@ -1142,17 +1220,11 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo)
 
                        r = _AppControlImpl::FindAndStart(operationId, &url, &mime, null, null, null);
                        SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS || r == E_OBJ_NOT_FOUND, r, "[%s] Propagating.", GetErrorMessage(r));
-       
                        if (r == E_OBJ_NOT_FOUND)
                        {
-                               _SelectBox* pSelectBox = new (std::nothrow) _SelectBox;
-                               SysTryReturnVoidResult(NID_WEB_CTRL, pSelectBox, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
-
-                               r = pSelectBox->Construct(false, L"Select application", 1, null, url);
-                               SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+                               String operationId(L"http://tizen.org/appcontrol/operation/download");
 
-                               pSelectBox->AddListItem(pSysResource->GetString(_RESOURCE_DOMAIN_ID_OSP, "IDS_TPLATFORM_BODY_DOWNLOAD_ABB"), _SelectBox::LIST_ITEM_TYPE_NORMAL, false);
-                               r = pSelectBox->ShowPopup();
+                               r = _AppControlImpl::FindAndStart(operationId, &url, null, null, null, null);
                                SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
                        }
 
@@ -1160,6 +1232,7 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo)
                }
                break;
        }
+
        case WEB_DECISION_DOWNLOAD:
        {
                ewk_policy_decision_ignore(pPolicy);
@@ -1170,16 +1243,18 @@ OnWebDataReceived(void* pUserData, Evas_Object* pView, void* pEventInfo)
                Ewk_Context* pContext = ewk_view_context_get(pView);
                SysAssertf(pContext, "Failed to get webkit instance.");
 
-               pDownloadHandler->StartDownload(pUrl);
+               pDownloadHandler->StartDownload(url);
 
                return;
        }
+
        case WEB_DECISION_IGNORE:
        {
                ewk_policy_decision_ignore(pPolicy);
 
                return;
        }
+
        default:
        {
                SysAssert(false);
@@ -1293,7 +1368,13 @@ OnLoadingCompleted(void* pUserData, Evas_Object* pView, void* pEventInfo)
                SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
                pEventArg.release();
        }
+}
+
 
+void
+OnLoadingCommitted(void* pUserData, Evas_Object* pView, void* pEventInfo)
+{
+       evas_object_focus_set(pView, EINA_FALSE);
 }
 
 
@@ -1537,7 +1618,6 @@ FireWebPageBlockSelectedEventF(_WebImpl* pImpl)
        SysTryReturnResult(NID_WEB_CTRL, startPoint.get() && endPoint.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
 
        pImpl->GetBlockRange(*startPoint.get(), *endPoint.get());
-
        if ((endPoint->x != 0.0f) && (endPoint->y != 0.0f))
        {
                std::unique_ptr<_WebUiEventArg> pEventArg(new (std::nothrow) _WebUiEventArg(WEB_EVENT_WEBUIEVENTLISTENER_PAGE_BLOCK_SELECTED_FLOAT));
@@ -1613,11 +1693,6 @@ OnWebKeypadStateChanged(void* pUserData, Evas_Object* pView, void* pEventInfo)
        Eina_Rectangle* pEinaRect = reinterpret_cast< Eina_Rectangle* >(pEventInfo);
        SysAssertf(pImpl && pEinaRect, "Failed to request");
 
-       if (pImpl->IsVisible() == false)
-       {
-               evas_object_focus_set(pView, EINA_FALSE);
-       }
-
        if (pImpl->GetSetting().GetInputStyle() == INPUT_STYLE_OVERLAY)
        {
                _ICoordinateSystemTransformer* pXformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
@@ -1635,11 +1710,7 @@ OnWebKeypadStateChanged(void* pUserData, Evas_Object* pView, void* pEventInfo)
                {
                        pFormImpl->DeflateClientRectHeight(pXformer->TransformVertical(rect.height));
 
-                       if (pFormImpl->HasFooter())
-                       {
-                               pFormImpl->GetCore().SetKeypadShowState(true);
-                               pFormImpl->Draw();
-                       }                       
+                       pFormImpl->Invalidate(false);
                }
 
                if (pImpl->GetWebKeypadEventListener())
@@ -1656,7 +1727,7 @@ OnWebKeypadStateChanged(void* pUserData, Evas_Object* pView, void* pEventInfo)
                                pImpl->GetWebKeypadEventListener()->OnWebKeypadWillOpen(*dynamic_cast< Web* >(&pImpl->GetPublic()));
                        }
                }
-               pImpl->SetKeypadVisibleState(true);
+
                pImpl->SetPreviousKeypadBounds(rect);
        }
        else
@@ -1673,6 +1744,23 @@ OnWebKeypadOpened(void* pUserData, Evas_Object* pView, void* pEventInfo)
        _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
        SysAssertf(pImpl, "Failed to request");
 
+       pImpl->SetKeypadVisibleState(true);
+
+       _FormImpl* pFormImpl = pImpl->GetParentFormImpl(dynamic_cast< _ControlImpl* >(pImpl));
+       if (pFormImpl)
+       {
+               _ICoordinateSystemTransformer* pXformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
+               SysAssertf(pXformer, "Failed to get CoordinateTransformer");
+
+               pFormImpl->DeflateClientRectHeight(pXformer->TransformVertical(pImpl->GetPreviousKeypadBounds().height));
+
+               if (pFormImpl->HasFooter())
+               {
+                       pFormImpl->GetCore().SetKeypadShowState(true);
+                       pFormImpl->Draw();
+               }
+       }
+
        if (pImpl->GetWebKeypadEventListener())
        {
                pImpl->GetWebKeypadEventListener()->OnWebKeypadOpened(*static_cast< Web* >(&pImpl->GetPublic()));
@@ -1691,6 +1779,8 @@ OnWebKeypadClosed(void* pUserData, Evas_Object* pView, void* pEventInfo)
        {
                pFormImpl->DeflateClientRectHeight(0);
 
+               pFormImpl->Invalidate(false);
+
                if (pFormImpl->HasFooter())
                {
                        pFormImpl->GetCore().SetKeypadShowState(false);
@@ -1708,20 +1798,45 @@ OnWebKeypadClosed(void* pUserData, Evas_Object* pView, void* pEventInfo)
 
 
 void
+OnWindowObjectFocusLost(void* pUserData, Evas_Object* pWin, void* pEvent_info)
+{
+       _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+       SysAssertf(pImpl, "Failed to request");
+
+       pImpl->SetWinFocusLost(true);
+}
+
+
+void
 OnWindowObjectFocusGained(void* pUserData, Evas_Object* pWin, void* pEvent_info)
 {
        _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
        SysAssertf(pImpl, "Failed to request");
 
-       if (pImpl->IsKeypadOpened() == true && pImpl->IsVisible() == true && pImpl->IsFocused() == true)
+       if (pImpl->IsVisible() == true && pImpl->IsFocused() == true)
        {
                _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
                SysAssertf(pWebCore, "Failed to get Web core object");
 
-               evas_object_focus_set(pWebCore->GetWebNativeNode(), EINA_TRUE);
+               if (pImpl->IsWinFocusLost() == true)
+               {
+                       Ewk_Settings* pSettings = ewk_view_settings_get(pWebCore->GetWebNativeNode());
+                       SysAssertf(pSettings, "Failed to get settings instance.");
 
-               pImpl->SetKeypadVisibleState(true);
+                       if (ewk_settings_clear_text_selection_automatically_get(pSettings) == EINA_FALSE)
+                       {
+                               ewk_settings_clear_text_selection_automatically_set(pSettings, EINA_TRUE);
+
+                               evas_object_focus_set(pWebCore->GetWebNativeNode(), EINA_TRUE);
+                       }
+                       else if (pImpl->IsKeypadOpened() == true)
+                       {
+                               evas_object_focus_set(pWebCore->GetWebNativeNode(), EINA_TRUE);
+                       }
+               }
        }
+
+       pImpl->SetWinFocusLost(false);
 }
 
 
@@ -1735,6 +1850,38 @@ OnWebNativeNodeFocusGained(void* pUserData, Evas* pCanvas, Evas_Object* pView, v
        {
                pImpl->SetKeypadOpened(false);
        }
+       else if (pImpl->IsWinFocusLost() == true && pImpl->IsFocused() == false)
+       {
+               _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
+               SysAssertf(pWebCore, "Failed to get Web core object");
+
+               evas_object_focus_set(pWebCore->GetWebNativeNode(), EINA_FALSE);
+       }
+}
+
+
+void
+OnWebNativeNodeFocusLost(void* pUserData, Evas* pCanvas, Evas_Object* pView, void* pEventInfo)
+{
+       _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+       SysAssertf(pImpl, "Failed to request");
+
+       _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));
+       SysAssertf(pWebCore, "Failed to get Web core object");
+
+       Eina_Rectangle leftHandle;
+       Eina_Rectangle rightHandle;
+
+       EINA_RECTANGLE_SET(&leftHandle, 0, 0, 0, 0);
+       EINA_RECTANGLE_SET(&rightHandle, 0, 0, 0, 0);
+
+       if (pImpl->IsWinFocusLost() == true && ewk_view_text_selection_range_get(pWebCore->GetWebNativeNode(), &leftHandle, &rightHandle))
+       {
+               Ewk_Settings* pSettings = ewk_view_settings_get(pWebCore->GetWebNativeNode());
+               SysAssertf(pSettings, "Failed to get settings instance.");
+
+               ewk_settings_clear_text_selection_automatically_set(pSettings, EINA_FALSE);
+       }
 } 
 
 
@@ -2084,6 +2231,7 @@ _WebImpl::_WebImpl(Web* pWeb, Tizen::Ui::_Control* pCore)
        , __isFooterVisible(false)
        , __isKeypadVisible(false)
        , __isKeypadOpened(false)
+       , __isWinFocusLost(false)
        , __isLoadingErrorOccurred(false)
        , __isRedirectRequested(false)
        , __isCertificateRequested(false)
@@ -2111,6 +2259,7 @@ _WebImpl::_WebImpl(Web* pWeb, Tizen::Ui::_Control* pCore)
        , __pNotificationConfirmPopup(null)
        , __pScriptAlertConfirmPopup(null)
        , __pScriptConfirmPopup(null)
+       , __pBeforeUnloadConfirmPopup(null)
        , __pAppCacheConfirmPopup(null)
        , __pDbQuotaConfirmPopup(null)
        , __pLocalFsQuotaConfirmPopup(null)
@@ -2139,15 +2288,13 @@ _WebImpl::_WebImpl(Web* pWeb, Tizen::Ui::_Control* pCore)
 
 _WebImpl::~_WebImpl()
 {
-       _DownloadManagerImpl* pManagerImpl = _DownloadManagerImpl::GetInstance();
-       pManagerImpl->SetDownloadListener(null);
-
        _WebManager* pWebManager = _WebManager::GetInstance();
+       SysTryCatch(NID_WEB_CTRL, pWebManager, , E_SYSTEM, "[%s] Failed to get the _ControlManager instance.", GetErrorMessage(E_SYSTEM));
        pWebManager->RemoveWeb(reinterpret_cast< int >(this));
 
+CATCH:
+       _SettingInfoImpl::RemoveSettingEventListener(*this);
        RemoveEventListenerCallback();
-
-       ClearCertificateDb();
 }
 
 
@@ -2233,11 +2380,6 @@ _WebImpl::Construct(void)
        r = InitWebEvent();
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       _DownloadManagerImpl* pManagerImpl = _DownloadManagerImpl::GetInstance();
-       SysTryReturn(NID_WEB_CTRL, pManagerImpl, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       pManagerImpl->SetDownloadListener(this);
-
        __pWebCore = dynamic_cast< _Web* >(&(GetCore()));
        SysTryReturnResult(NID_WEB_CTRL, __pWebCore, E_SYSTEM, "A system error has been occurred. Failed to get web control");
 
@@ -2342,10 +2484,16 @@ CATCH:
 result
 _WebImpl::LoadUrl(const String& url) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return E_SUCCESS;
+       }
+
        std::unique_ptr<char[]> pUrl(_StringConverter::CopyToCharArrayN(url));
        SysTryReturn(NID_WEB_CTRL, pUrl.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
-       ewk_view_url_set(__pWebCore->GetWebNativeNode(), pUrl.get());
+       ewk_view_url_set(pWebview, pUrl.get());
 
        return E_SUCCESS;
 }
@@ -2354,12 +2502,18 @@ _WebImpl::LoadUrl(const String& url) const
 result 
 _WebImpl::LoadUrl(const String& url, const HttpHeader& header)
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return E_SUCCESS;
+       }
+
        std::unique_ptr<char[]> pUrl(_StringConverter::CopyToCharArrayN(url));
        SysTryReturn(NID_WEB_CTRL, pUrl.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-       
+
        Eina_Hash* pHttpHeader = ConvertToSlpHeaderN(header);
 
-       ewk_view_url_request_set(__pWebCore->GetWebNativeNode(), pUrl.get(), EWK_HTTP_METHOD_GET, pHttpHeader, null);
+       ewk_view_url_request_set(pWebview, pUrl.get(), EWK_HTTP_METHOD_GET, pHttpHeader, null);
 
        eina_hash_free(pHttpHeader);
 
@@ -2370,12 +2524,18 @@ _WebImpl::LoadUrl(const String& url, const HttpHeader& header)
 result
 _WebImpl::LoadUrlWithPostRequest(const String& url, const HttpHeader& header, const ByteBuffer& body) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return E_SUCCESS;
+       }
+
        std::unique_ptr<char[]> pUrl(_StringConverter::CopyToCharArrayN(url));
        SysTryReturn(NID_WEB_CTRL, pUrl.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
        Eina_Hash* pHttpHeader = ConvertToSlpHeaderN(header);
 
-       ewk_view_url_request_set(__pWebCore->GetWebNativeNode(), pUrl.get(), EWK_HTTP_METHOD_POST, pHttpHeader, reinterpret_cast< const char* >(body.GetPointer()));
+       ewk_view_url_request_set(pWebview, pUrl.get(), EWK_HTTP_METHOD_POST, pHttpHeader, reinterpret_cast< const char* >(body.GetPointer()));
 
        eina_hash_free(pHttpHeader);
 
@@ -2386,6 +2546,12 @@ _WebImpl::LoadUrlWithPostRequest(const String& url, const HttpHeader& header, co
 result
 _WebImpl::LoadData(const String& baseUrl, const ByteBuffer& content, const String& mime, const String& encoding) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return E_SUCCESS;
+       }
+
        SysTryReturnResult(NID_WEB_CTRL, content.GetLimit() > 0, E_INVALID_ARG, "The content buffer is empty.");
 
        std::unique_ptr<char[]> pUrl(_StringConverter::CopyToCharArrayN(baseUrl));
@@ -2393,7 +2559,7 @@ _WebImpl::LoadData(const String& baseUrl, const ByteBuffer& content, const Strin
        std::unique_ptr<char[]> pEncoding(_StringConverter::CopyToCharArrayN(encoding));
        SysTryReturn(NID_WEB_CTRL, pUrl.get() && pMime.get() && pEncoding.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
-       ewk_view_contents_set(__pWebCore->GetWebNativeNode(), reinterpret_cast< const char* >(content.GetPointer()), content.GetLimit(), pMime.get(), pEncoding.get(), pUrl.get());
+       ewk_view_contents_set(pWebview, reinterpret_cast< const char* >(content.GetPointer()), content.GetLimit(), pMime.get(), pEncoding.get(), pUrl.get());
 
        return E_SUCCESS;
 }
@@ -2402,14 +2568,26 @@ _WebImpl::LoadData(const String& baseUrl, const ByteBuffer& content, const Strin
 void
 _WebImpl::Pause(void)
 {
-       ewk_view_suspend(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_suspend(pWebview);
 }
 
 
 void
 _WebImpl::Resume(void)
 {
-       ewk_view_resume(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_resume(pWebview);
 }
 
 
@@ -2425,7 +2603,14 @@ _WebImpl::ShowSelectBoxPopup(bool isMultiSelect, const String& title, Eina_List*
        std::unique_ptr<_SelectBox> pSelectBox(new (std::nothrow) _SelectBox());
        SysTryReturnResult(NID_WEB_CTRL, pSelectBox.get(), E_OUT_OF_MEMORY, "Memory allocation failed.");
 
-       r = pSelectBox->Construct(isMultiSelect, title, DEFAULT_LIST_ITEM_COUNT, pWebView);
+       if (isMultiSelect)
+       {
+               r = pSelectBox->Construct(this, isMultiSelect, title, DEFAULT_LIST_ITEM_COUNT - 1, pWebView);
+       }
+       else
+       {
+               r = pSelectBox->Construct(this, isMultiSelect, title, DEFAULT_LIST_ITEM_COUNT, pWebView);
+       }
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
        r = pSelectBox->UpdateList(pItems, selectedIndex, false, false);
@@ -2486,64 +2671,112 @@ _WebImpl::GetColorpicker(void)
 bool
 _WebImpl::CanGoBack(void) const
 {
-       return static_cast< bool >(ewk_view_back_possible(__pWebCore->GetWebNativeNode()));
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return false;
+       }
+
+       return static_cast< bool >(ewk_view_back_possible(pWebview));
 }
 
 
 bool
 _WebImpl::CanGoForward(void) const
 {
-       return static_cast< bool >(ewk_view_forward_possible(__pWebCore->GetWebNativeNode()));
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return false;
+       }
+
+       return static_cast< bool >(ewk_view_forward_possible(pWebview));
 }
 
 
 void
 _WebImpl::GoBack(void) const
 {
-       ewk_view_back(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_back(pWebview);
 }
 
 
 void
 _WebImpl::GoForward(void) const
 {
-       ewk_view_forward(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_forward(pWebview);
 }
 
 
 Tizen::Base::String
 _WebImpl::GetUrl(void) const
 {
-       return ewk_view_url_get(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return L"";
+       }
+
+       return ewk_view_url_get(pWebview);
 }
 
 
 Tizen::Base::String
 _WebImpl::GetTitle(void) const
 {
-       return ewk_view_title_get(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return L"";
+       }
+
+       return ewk_view_title_get(pWebview);
 }
 
 
 void
 _WebImpl::StopLoading(void) const
 {
-       ewk_view_stop(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_stop(pWebview);
 }
 
 
 void
 _WebImpl::Reload(void) const
 {
-       ewk_view_reload(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_reload(pWebview);
 }
 
 
 String*
 _WebImpl::EvaluateJavascriptN(const String& scriptCode)
 {
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       if (!pView)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                return null;
        }
@@ -2554,7 +2787,7 @@ _WebImpl::EvaluateJavascriptN(const String& scriptCode)
        std::unique_ptr<_WebPresenter> pPresenter(new (std::nothrow) _WebPresenter(this));
        SysTryReturn(NID_WEB_CTRL, pPresenter.get(), null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
 
-       ewk_view_script_execute(pView, pScript.get(), OnScriptExecuted, pPresenter.get());
+       ewk_view_script_execute(pWebview, pScript.get(), OnScriptExecuted, pPresenter.get());
 
        String* pResult = new (std::nothrow) String(L"");
        SysTryReturn(NID_WEB_CTRL, pResult, null, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
@@ -2568,9 +2801,15 @@ _WebImpl::EvaluateJavascriptN(const String& scriptCode)
 result
 _WebImpl::SetZoomLevel(float level)
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return E_SUCCESS;
+       }
+
        SysTryReturnResult(NID_WEB_CTRL, level >= MIN_ZOOM_LEVEL && level <= MAX_ZOOM_LEVEL, E_OUT_OF_RANGE, "The level(%f) must be between 0.3 and 2.0(%f).", level, level);
 
-       ewk_view_scale_set(__pWebCore->GetWebNativeNode(), static_cast< double >(level), 0, 0);
+       ewk_view_scale_set(pWebview, static_cast< double >(level), 0, 0);
 
        return E_SUCCESS;
 }
@@ -2579,15 +2818,21 @@ _WebImpl::SetZoomLevel(float level)
 float
 _WebImpl::GetZoomLevel(void) const
 {
-       return static_cast< float >(ewk_view_scale_get(__pWebCore->GetWebNativeNode()));
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return -1.0f;
+       }
+
+       return static_cast< float >(ewk_view_scale_get(pWebview));
 }
 
 
 const PageNavigationList*
 _WebImpl::GetBackForwardListN(void) const
 {
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       if (!pView)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                return null;
        }
@@ -2606,7 +2851,7 @@ _WebImpl::GetBackForwardListN(void) const
        String url(L"");
        String title(L"");
 
-       Ewk_History* pEwkHistoryList = ewk_view_history_get(pView);
+       Ewk_History* pEwkHistoryList = ewk_view_history_get(pWebview);
        SysTryReturn(NID_WEB_CTRL, pEwkHistoryList, null, E_SYSTEM, "[%s] A system error has been occurred. Failed to get full history.", GetErrorMessage(E_SYSTEM));
 
        Ewk_History_Item* pEwkItem = ewk_history_nth_item_get(pEwkHistoryList, 0);
@@ -2666,8 +2911,8 @@ CATCH:
 bool
 _WebImpl::SearchText(const String& text, bool searchForward)
 {
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       if (!pView)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                return false;
        }
@@ -2684,7 +2929,7 @@ _WebImpl::SearchText(const String& text, bool searchForward)
        std::unique_ptr<_WebPresenter> pPresenter(new (std::nothrow) _WebPresenter(this));
        SysTryReturn(NID_WEB_CTRL, pPresenter.get(), false, E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
 
-       r = SynchronizeSearch(SEARCH_SYNC, pView, condition, text, searchForward, false, pPresenter.get());
+       r = SynchronizeSearch(SEARCH_SYNC, pWebview, condition, text, searchForward, false, pPresenter.get());
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, false, r, "[%s] Propagating.", GetErrorMessage(r));
 
        int result = 0;
@@ -2697,8 +2942,8 @@ _WebImpl::SearchText(const String& text, bool searchForward)
 result
 _WebImpl::SearchTextAllAsync(const Tizen::Base::String& text, bool caseSensitive)
 {
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       if (!pView)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                return E_SUCCESS;
        }
@@ -2712,7 +2957,7 @@ _WebImpl::SearchTextAllAsync(const Tizen::Base::String& text, bool caseSensitive
            condition = static_cast <Ewk_Find_Options>(condition | EWK_FIND_OPTIONS_CASE_INSENSITIVE);
        }
 
-       r = SynchronizeSearch(SEARCH_ALL_ASYNC, pView, condition, text, true, caseSensitive);
+       r = SynchronizeSearch(SEARCH_ALL_ASYNC, pWebview, condition, text, true, caseSensitive);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
        return E_SUCCESS;
@@ -2722,8 +2967,8 @@ _WebImpl::SearchTextAllAsync(const Tizen::Base::String& text, bool caseSensitive
 result
 _WebImpl::SearchNextAsync(bool searchForward)
 {
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       if (!pView)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                return E_SUCCESS;
        }
@@ -2746,7 +2991,7 @@ _WebImpl::SearchNextAsync(bool searchForward)
                condition = static_cast <Ewk_Find_Options>(condition | EWK_FIND_OPTIONS_BACKWARDS);
        }
 
-       r = SynchronizeSearch(SEARCH_NEXT_ASYNC, pView, condition, __textSearch.__text, searchForward);
+       r = SynchronizeSearch(SEARCH_NEXT_ASYNC, pWebview, condition, __textSearch.__text, searchForward);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
        return E_SUCCESS;
@@ -2761,10 +3006,6 @@ _WebImpl::SynchronizeSearch(_SearchType type, Evas_Object* pView, Ewk_Find_Optio
        std::unique_ptr<char[]> pText(_StringConverter::CopyToCharArrayN(text));
        SysTryReturn(NID_WEB_CTRL, pText.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
-       Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
-       SysAssertf(pSettings, "Failed to get webkit instance.");
-       ewk_settings_clear_text_selection_automatically_set(pSettings, true);
-
        switch (type)
        {
        case SEARCH_SYNC:
@@ -2967,8 +3208,8 @@ _WebImpl::GetElementByPointN(const Point& point) const
 const HitElementResult*
 _WebImpl::GetElementByPointN(const FloatPoint& point) const
 {
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       if (!pView)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                return null;
        }
@@ -2985,7 +3226,7 @@ _WebImpl::GetElementByPointN(const FloatPoint& point) const
 
        Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(point)));
 
-       Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pView, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+       Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pWebview, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
        SysTryReturn(NID_WEB_CTRL, pEwkHitTest, null, E_SYSTEM, "[%s] Failed to get hit test.", GetErrorMessage(E_SYSTEM));
 
        Eina_Hash* pAttrHash = ewk_hit_test_attribute_hash_get(pEwkHitTest);
@@ -3080,7 +3321,13 @@ CATCH:
 bool
 _WebImpl::IsLoading(void) const
 {
-       double percent = ewk_view_load_progress_get(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return false;
+       }
+
+       double percent = ewk_view_load_progress_get(pWebview);
 
        if (Double::Compare(percent, 0.0) > 0 && Double::Compare(percent, 1.0) < 0)
        {
@@ -3096,19 +3343,26 @@ _WebImpl::IsLoading(void) const
 String
 _WebImpl::GetTextFromBlock(void) const
 {
-       return ewk_view_text_selection_text_get(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return L"";
+       }
+
+       return ewk_view_text_selection_text_get(pWebview);
 }
 
 
 bool
 _WebImpl::IsPrivateBrowsingEnabled(void) const
 {
-       if (__pWebCore->GetWebNativeNode() == null)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                return _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsPrivateBrowsingEnabled();
        }
 
-       Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
+       Ewk_Settings* pSettings = ewk_view_settings_get(pWebview);
        SysAssertf(pSettings, "Failed to get webkit instance.");
 
        return static_cast< bool >(ewk_settings_private_browsing_enabled_get(pSettings));
@@ -3118,13 +3372,15 @@ _WebImpl::IsPrivateBrowsingEnabled(void) const
 void
 _WebImpl::SetPrivateBrowsingEnabled(bool enable)
 {
-       if (__pWebCore->GetWebNativeNode() == null)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->SetPrivateBrowsingEnabled(enable);
+
                return;
        }
 
-       Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
+       Ewk_Settings* pSettings = ewk_view_settings_get(pWebview);
        SysAssertf(pSettings, "Failed to get webkit instance.");
 
        ewk_settings_private_browsing_enabled_set(pSettings, static_cast< Eina_Bool >(enable));
@@ -3134,14 +3390,26 @@ _WebImpl::SetPrivateBrowsingEnabled(bool enable)
 void
 _WebImpl::ClearHistory(void)
 {
-       ewk_view_back_forward_list_clear(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_back_forward_list_clear(pWebview);
 }
 
 
 void
 _WebImpl::ClearCache(void)
 {
-       Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       Ewk_Context* pContext = ewk_view_context_get(pWebview);
 
        ewk_context_cache_clear(pContext);
 }
@@ -3150,7 +3418,13 @@ _WebImpl::ClearCache(void)
 void
 _WebImpl::ClearCookie(void)
 {
-       Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       Ewk_Context* pContext = ewk_view_context_get(pWebview);
        Ewk_Cookie_Manager* pCookieManager =  ewk_context_cookie_manager_get(pContext);
 
        ewk_cookie_manager_cookies_clear(pCookieManager);
@@ -3160,7 +3434,13 @@ _WebImpl::ClearCookie(void)
 void
 _WebImpl::ClearFormData(void)
 {
-       Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       Ewk_Context* pContext = ewk_view_context_get(pWebview);
 
        ewk_context_form_candidate_data_clear(pContext);
 }
@@ -3169,7 +3449,13 @@ _WebImpl::ClearFormData(void)
 void
 _WebImpl::ClearLoginFormData(void)
 {
-       Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       Ewk_Context* pContext = ewk_view_context_get(pWebview);
 
        ewk_context_form_password_data_clear(pContext);
 }
@@ -3178,12 +3464,13 @@ _WebImpl::ClearLoginFormData(void)
 bool
 _WebImpl::IsCookieEnabled(void) const
 {
-       if (__pWebCore->GetWebNativeNode() == null)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                return _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->IsCookieEnabled();
        }
 
-       Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
+       Ewk_Context* pContext = ewk_view_context_get(pWebview);
        Ewk_Cookie_Manager* pCookieManager =  ewk_context_cookie_manager_get(pContext);
        SysAssertf(pCookieManager, "Failed to get webkit instance.");
 
@@ -3202,14 +3489,15 @@ _WebImpl::IsCookieEnabled(void) const
 void
 _WebImpl::SetCookieEnabled(bool enable)
 {
-       if (__pWebCore->GetWebNativeNode() == null)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
                _WebSettingImpl::GetInstance(__pWebCore->GetSetting())->SetCookiEnabled(enable);
 
                return;
        }
 
-       Ewk_Context* pContext = ewk_view_context_get(__pWebCore->GetWebNativeNode());
+       Ewk_Context* pContext = ewk_view_context_get(pWebview);
        Ewk_Cookie_Manager* pCookieManager =  ewk_context_cookie_manager_get(pContext);
        SysAssertf(pCookieManager, "Failed to get webkit instance.");
 
@@ -3228,6 +3516,12 @@ _WebImpl::SetCookieEnabled(bool enable)
 result 
 _WebImpl::SavePageAsPdf(const String& filePath, const Dimension* pSize) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return E_SUCCESS;
+       }
+
        result r = E_SUCCESS;
 
        std::unique_ptr<char[]> pFilePath(_StringConverter::CopyToCharArrayN(filePath));
@@ -3252,15 +3546,15 @@ _WebImpl::SavePageAsPdf(const String& filePath, const Dimension* pSize) const
        {
                SysTryReturnResult(NID_WEB_CTRL, pSize->width > 0 && pSize->height > 0, E_INVALID_ARG, "Invalid argument(s) is used. Size of pdf file is invalid.");
 
-               ewk_view_contents_pdf_get(__pWebCore->GetWebNativeNode(), pSize->width, pSize->height, pFilePath.get());
+               ewk_view_contents_pdf_get(pWebview, pSize->width, pSize->height, pFilePath.get());
        }
        else
        {
                Evas_Coord contentsWidth;
                Evas_Coord contentsHeight;
 
-               ewk_view_contents_size_get(__pWebCore->GetWebNativeNode(), &contentsWidth, &contentsHeight);
-               ewk_view_contents_pdf_get(__pWebCore->GetWebNativeNode(), contentsWidth, contentsHeight, pFilePath.get());
+               ewk_view_contents_size_get(pWebview, &contentsWidth, &contentsHeight);
+               ewk_view_contents_pdf_get(pWebview, contentsWidth, contentsHeight, pFilePath.get());
        }
 
        return E_SUCCESS;
@@ -3270,10 +3564,16 @@ _WebImpl::SavePageAsPdf(const String& filePath, const Dimension* pSize) const
 bool
 _WebImpl::IsMimeSupported(const String& mime) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return false;
+       }
+
        std::unique_ptr<char[]> pMime(_StringConverter::CopyToCharArrayN(mime));
        SysTryReturn(NID_WEB_CTRL, pMime.get(), false, GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
 
-       return static_cast< bool >(ewk_frame_can_show_mime_type(ewk_view_main_frame_get(__pWebCore->GetWebNativeNode()), pMime.get()));
+       return static_cast< bool >(ewk_frame_can_show_mime_type(ewk_view_main_frame_get(pWebview), pMime.get()));
 }
 
 
@@ -3500,10 +3800,12 @@ _WebImpl::SetEventListenerCallback(void) const
                evas_object_smart_callback_add(pWebNativeNode, "load,stop", OnLoadingCanceled, this);
                evas_object_smart_callback_add(pWebNativeNode, "load,error", OnLoadingErrorOccurred, this);
                evas_object_smart_callback_add(pWebNativeNode, "title,changed", OnPageTitleReceived, this);
+               evas_object_smart_callback_add(pWebNativeNode, "load,committed", OnLoadingCommitted, this);
 
                evas_object_smart_callback_add(pWebNativeNode, "requestToNative,json", OnHandleJavaScriptRequest, this);
 
                evas_object_smart_callback_add(pWinObject, "focus,in", OnWindowObjectFocusGained, this);
+               evas_object_smart_callback_add(pWinObject, "focus,out", OnWindowObjectFocusLost, this);
 
                evas_object_smart_callback_add(pWebNativeNode, "inputmethod,changed", OnWebKeypadStateChanged, this);
                evas_object_smart_callback_add(pWebNativeNode, "editorclient,ime,opened", OnWebKeypadOpened, this);
@@ -3517,6 +3819,7 @@ _WebImpl::SetEventListenerCallback(void) const
                ewk_view_javascript_alert_callback_set(pWebNativeNode, OnScriptAlertRequested, const_cast< _WebImpl* >(this));
                ewk_view_javascript_prompt_callback_set(pWebNativeNode, OnScriptPromptRequested, const_cast< _WebImpl* >(this));
                ewk_view_javascript_confirm_callback_set(pWebNativeNode, OnScriptConfirmRequested, const_cast< _WebImpl* >(this));
+               ewk_view_before_unload_confirm_panel_callback_set(pWebNativeNode, OnBeforeUnloadConfirmRequested, const_cast< _WebImpl* >(this));
 
                evas_object_smart_callback_add(pWebNativeNode, "policy,response,decide", OnWebDataReceived, this);
 
@@ -3540,11 +3843,14 @@ _WebImpl::SetEventListenerCallback(void) const
                evas_object_smart_callback_add(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered, this);
                evas_object_smart_callback_add(pWebNativeNode, "icon,received", OnFaviconReceived, this);
 
-               evas_object_smart_callback_add(pWebNativeNode, "text,selected", OnWebPageBlockSelected, this);
+               evas_object_smart_callback_add(pWebNativeNode, "magnifier,hide", OnWebPageBlockSelected, this);
 
                evas_object_smart_callback_add(pWebNativeNode, "fullscreen,enterfullscreen", OnFullScreenEntered, this);
                evas_object_smart_callback_add(pWebNativeNode, "fullscreen,exitfullscreen", OnFullScreenExited, this);
 
+               evas_object_smart_callback_add(pWebNativeNode, "keyevent,down,not,handled", OnFocusDownRequested, this);
+               evas_object_smart_callback_add(pWebNativeNode, "keyevent,up,not,handled", OnFocusUpRequested, this);
+
                Ewk_Context* pContext = ewk_view_context_get(pWebNativeNode);
                SysAssertf(pContext, "Failed to get webkit instance.");
                ewk_context_did_start_download_callback_set(pContext, OnDidStartDownloadCallback, const_cast< _WebImpl* >(this));
@@ -3556,6 +3862,7 @@ _WebImpl::SetEventListenerCallback(void) const
                ewk_view_exceeded_local_file_system_quota_callback_set(pWebNativeNode, OnLocalFileSystemQuotaExceeded, const_cast< _WebImpl* >(this));
 
                evas_object_event_callback_add(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained, this);
+               evas_object_event_callback_add(pWebNativeNode, EVAS_CALLBACK_FOCUS_OUT, OnWebNativeNodeFocusLost, this);
        }
 }
 
@@ -3583,10 +3890,12 @@ _WebImpl::RemoveEventListenerCallback(void) const
                evas_object_smart_callback_del(pWebNativeNode, "load,stop", OnLoadingCanceled);
                evas_object_smart_callback_del(pWebNativeNode, "load,error", OnLoadingErrorOccurred);
                evas_object_smart_callback_del(pWebNativeNode, "title,changed", OnPageTitleReceived);
+               evas_object_smart_callback_del(pWebNativeNode, "load,committed", OnLoadingCommitted);
 
                evas_object_smart_callback_del(pWebNativeNode, "requestToNative,json", OnHandleJavaScriptRequest);
 
                evas_object_smart_callback_del_full(pWinObject, "focus,in", OnWindowObjectFocusGained, this);
+               evas_object_smart_callback_del_full(pWinObject, "focus,out", OnWindowObjectFocusLost, this);
 
                evas_object_smart_callback_del(pWebNativeNode, "inputmethod,changed", OnWebKeypadStateChanged);
                evas_object_smart_callback_del(pWebNativeNode, "editorclient,ime,opened", OnWebKeypadOpened);
@@ -3600,6 +3909,7 @@ _WebImpl::RemoveEventListenerCallback(void) const
                ewk_view_javascript_alert_callback_set(pWebNativeNode, null, null);
                ewk_view_javascript_prompt_callback_set(pWebNativeNode, null, null);
                ewk_view_javascript_confirm_callback_set(pWebNativeNode, null, null);
+               ewk_view_before_unload_confirm_panel_callback_set(pWebNativeNode, null, null);
 
                evas_object_smart_callback_del(pWebNativeNode, "policy,response,decide", OnWebDataReceived);
 
@@ -3623,11 +3933,14 @@ _WebImpl::RemoveEventListenerCallback(void) const
                evas_object_smart_callback_del(pWebNativeNode, "touchmove,handled", OnWebPreventDefaultTriggered);
                evas_object_smart_callback_del(pWebNativeNode, "icon,received", OnFaviconReceived);
 
-               evas_object_smart_callback_del(pWebNativeNode, "text,selected", OnWebPageBlockSelected);
+               evas_object_smart_callback_del(pWebNativeNode, "magnifier,hide", OnWebPageBlockSelected);
 
                evas_object_smart_callback_del(pWebNativeNode, "fullscreen,enterfullscreen", OnFullScreenEntered);
                evas_object_smart_callback_del(pWebNativeNode, "fullscreen,exitfullscreen", OnFullScreenExited);
 
+               evas_object_smart_callback_del(pWebNativeNode, "keyevent,down,not,handled", OnFocusDownRequested);
+               evas_object_smart_callback_del(pWebNativeNode, "keyevent,up,not,handled", OnFocusUpRequested);
+
                Ewk_Context* pContext = ewk_view_context_get(pWebNativeNode);
                SysAssertf(pContext, "Failed to get webkit instance.");
                ewk_context_vibration_client_callbacks_set(pContext, null, null, null);
@@ -3638,36 +3951,11 @@ _WebImpl::RemoveEventListenerCallback(void) const
                ewk_view_exceeded_local_file_system_quota_callback_set(pWebNativeNode, null, null);
 
                evas_object_event_callback_del(pWebNativeNode, EVAS_CALLBACK_FOCUS_IN, OnWebNativeNodeFocusGained);
+               evas_object_event_callback_del(pWebNativeNode, EVAS_CALLBACK_FOCUS_OUT, OnWebNativeNodeFocusLost);
        }
 }
 
 
-void
-_WebImpl::ClearCertificateDb(void)
-{
-       result r = E_SUCCESS;
-
-       String certificatePath(Tizen::App::App::GetInstance()->GetAppRootPath() + CUSTOM_DB_DIRECTORY_PATH + USER_CONFIRM_DB_NAME);
-       String table(CERTIFICATE_TABLE_NAME);
-       _DatabaseImpl db;
-
-       r = db.Construct(certificatePath, "r+", null);
-       SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
-
-       db.BeginTransaction();
-
-       r = db.ExecuteSql(L"Delete From " + table, true);
-       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
-       db.CommitTransaction();
-
-       return;
-
-CATCH:
-       db.RollbackTransaction();
-}
-
-
 result
 _WebImpl::SetBlockSelectionPosition(const Point& startPoint)
 {
@@ -3678,46 +3966,37 @@ _WebImpl::SetBlockSelectionPosition(const Point& startPoint)
 result
 _WebImpl::SetBlockSelectionPosition(const FloatPoint& startPoint)
 {
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       Ewk_View_Smart_Data* pSmartData = (Ewk_View_Smart_Data*) evas_object_smart_data_get(pView);
-       if (pSmartData && pSmartData->api)
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
        {
-               Point absPoint( _CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(startPoint)));
+               return E_SUCCESS;
+       }
 
-               Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
-               SysAssertf(pSettings, "Failed to get webkit instance.");
-               ewk_settings_clear_text_selection_automatically_set(pSettings, true);
+       Ewk_View_Smart_Data* pSmartData = reinterpret_cast< Ewk_View_Smart_Data* >(evas_object_smart_data_get(pWebview));
+       SysAssertf(pSmartData && pSmartData->api, "Failed to get webkit instance.");
+       Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(startPoint)));
 
-               Eina_Bool ret = pSmartData->api->text_selection_down(pSmartData, absPoint.x, absPoint.y);
-               if (ret)
-               {
-                       pSmartData->api->text_selection_up(pSmartData, absPoint.x, absPoint.y);
+       Eina_Bool ret = pSmartData->api->text_selection_down(pSmartData, absPoint.x, absPoint.y);
+       if (ret)
+       {
+               pSmartData->api->text_selection_up(pSmartData, absPoint.x, absPoint.y);
 
-                       Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pView, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
-                       SysTryReturnResult(NID_WEB_CTRL, pEwkHitTest, E_SYSTEM, "Failed to get hit test.");
+               Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pWebview, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+               SysTryReturnResult(NID_WEB_CTRL, pEwkHitTest, E_SYSTEM, "Failed to get hit test.");
 
-                       String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
+               String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
 
-                       if (tagName.Equals(L"INPUT", false) || tagName.Equals(L"TEXTAREA", false))
-                       {
-                               ewk_view_command_execute(pView, "SelectWord", 0);
-                       }
-                       else
-                       {
-                               Eina_Hash* pAttrHash = ewk_hit_test_attribute_hash_get(pEwkHitTest);
-                               char* pValue = reinterpret_cast< char* >(eina_hash_find(pAttrHash, "contenteditable"));
-                               if(pValue)
-                               {
-                                       ewk_view_command_execute(pView, "SelectWord", 0);
-                               }
-                       }
+               Eina_Hash* pAttrHash = ewk_hit_test_attribute_hash_get(pEwkHitTest);
+               char* pValue = reinterpret_cast< char* >(eina_hash_find(pAttrHash, "contenteditable"));
+               if (tagName.Equals(L"INPUT", false) || tagName.Equals(L"TEXTAREA", false) || pValue)
+               {
+                       ewk_view_command_execute(pWebview, "SelectWord", null);
+                       evas_object_smart_callback_call(pWebview, "magnifier,hide", NULL);
                }
        }
 
        SysTryReturnResult(NID_WEB_CTRL, GetTextFromBlock().GetLength() > 0, E_INVALID_ARG, "Failed to set text selection up.");
 
-       evas_object_smart_callback_call(pView, "text,selected", NULL);
-
        return E_SUCCESS;
 }
 
@@ -3725,7 +4004,13 @@ _WebImpl::SetBlockSelectionPosition(const FloatPoint& startPoint)
 void
 _WebImpl::ReleaseBlock(void)
 {
-       ewk_view_text_selection_range_clear(__pWebCore->GetWebNativeNode());
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_text_selection_range_clear(pWebview);
 }
 
 
@@ -3745,6 +4030,13 @@ _WebImpl::GetBlockRange(Point& startPoint, Point& endPoint) const
 void
 _WebImpl::GetBlockRange(FloatPoint& startPoint, FloatPoint& endPoint) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               startPoint.x = startPoint.y = endPoint.x = endPoint.y = 0.0f;
+               
+       }
+
        Eina_Rectangle leftHandle;
        Eina_Rectangle rightHandle;
 
@@ -3769,12 +4061,17 @@ _WebImpl::GetBlockRange(FloatPoint& startPoint, FloatPoint& endPoint) const
 Bitmap*
 _WebImpl::GetFaviconN(void) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return null;
+       }
+
        result r = E_SUCCESS;
 
-       Evas_Object* pView = __pWebCore->GetWebNativeNode();
-       Ewk_Context* pContext = ewk_view_context_get(pView);
-       const char* pUrl = ewk_view_url_get(pView);
-       Evas* pEvas = evas_object_evas_get(pView);
+       Ewk_Context* pContext = ewk_view_context_get(pWebview);
+       const char* pUrl = ewk_view_url_get(pWebview);
+       Evas* pEvas = evas_object_evas_get(pWebview);
 
        Evas_Object* pFavicon = ewk_context_icon_database_icon_object_add(pContext, pUrl, pEvas);
        if (!pFavicon)
@@ -3807,23 +4104,41 @@ _WebImpl::GetFaviconN(void) const
 void
 _WebImpl::ScrollBy(const Tizen::Graphics::Point& diff)
 {
-       ewk_view_scroll_by(__pWebCore->GetWebNativeNode(), diff.x, diff.y);
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_scroll_by(pWebview, diff.x, diff.y);
 }
 
 
 void
 _WebImpl::ScrollTo(const Tizen::Graphics::Point& dest)
 {
-       ewk_view_scroll_set(__pWebCore->GetWebNativeNode(), dest.x, dest.y);
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       ewk_view_scroll_set(pWebview, dest.x, dest.y);
 }
 
 
 Point
 _WebImpl::GetScrollPosition(void) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return Point(0, 0);
+       }
+
        Point position;
 
-       ewk_view_scroll_pos_get(__pWebCore->GetWebNativeNode(), &position.x, &position.y);
+       ewk_view_scroll_pos_get(pWebview, &position.x, &position.y);
 
        return position;
 }
@@ -3832,10 +4147,16 @@ _WebImpl::GetScrollPosition(void) const
 Dimension
 _WebImpl::GetPageSize(void) const
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return Dimension(0, 0);
+       }
+
        Evas_Coord width = 0;
        Evas_Coord height = 0;
 
-       ewk_view_contents_size_get(__pWebCore->GetWebNativeNode(), &width, &height);
+       ewk_view_contents_size_get(pWebview, &width, &height);
 
        Dimension size(static_cast< int >(width), static_cast< int >(height));
 
@@ -3843,36 +4164,6 @@ _WebImpl::GetPageSize(void) const
 }
 
 
-result
-_WebImpl::AddHttpHeaderField(const String& name, const String& value)
-{
-       SysTryReturnResult(NID_WEB_CTRL, name.GetLength() > 0, E_INVALID_ARG, "Invalid argument(s) is used. name key is missing.");
-
-       std::unique_ptr<char[]> pName(_StringConverter::CopyToCharArrayN(name));
-       SysTryReturn(NID_WEB_CTRL, pName.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       std::unique_ptr<char[]> pValue(_StringConverter::CopyToCharArrayN(value));
-
-       ewk_view_custom_header_add(__pWebCore->GetWebNativeNode(), pName.get(), pValue.get());
-
-       return E_SUCCESS;
-}
-
-
-result
-_WebImpl::RemoveHttpHeaderField(const String& name)
-{
-       SysTryReturnResult(NID_WEB_CTRL, name.GetLength() > 0, E_INVALID_ARG, "Invalid argument(s) is used. name key is missing.");
-
-       std::unique_ptr<char[]> pName(_StringConverter::CopyToCharArrayN(name));
-       SysTryReturn(NID_WEB_CTRL, pName.get(), GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult()));
-
-       ewk_view_custom_header_remove(__pWebCore->GetWebNativeNode(), pName.get());
-
-       return E_SUCCESS;
-}
-
-
 void
 _WebImpl::SetLoadingErrorOccurred(bool arg)
 {
@@ -3946,6 +4237,12 @@ _WebImpl::IsCertificateConfirmed(void) const
 result
 _WebImpl::SetFullScreenKeypad(void)
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return E_SUCCESS;
+       }
+
        result r = E_SUCCESS;
 
        std::unique_ptr<Keypad> pKeypad(new (std::nothrow) Keypad());
@@ -3954,8 +4251,23 @@ _WebImpl::SetFullScreenKeypad(void)
        r = pKeypad->Construct(KEYPAD_STYLE_NORMAL, 100);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       String text(ewk_view_focused_input_element_value_get(__pWebCore->GetWebNativeNode()));
-       pKeypad->SetText(text);
+       Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(__pWebCore->GetTouchPosition())));
+
+       Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pWebview, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+       SysTryReturnResult(NID_WEB_CTRL, pEwkHitTest, E_SYSTEM, "Failed to get hit test.");
+
+       String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
+       if (tagName.Equals(L"INPUT", false))
+       {
+               String text(ewk_view_focused_input_element_value_get(pWebview));
+               pKeypad->SetText(text);
+       }
+       else
+       {
+               String* pText = EvaluateJavascriptN(L"document.activeElement.value");
+               SysTryReturnResult(NID_WEB_CTRL, pText, E_OUT_OF_MEMORY, "Memory allocation failed.");
+               pKeypad->SetText(*pText);
+       }
 
        r = pKeypad->SetShowState(true);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -4021,6 +4333,20 @@ _WebImpl::SetKeypadOpened(bool isKeypadOpened)
 }
 
 
+bool
+_WebImpl::IsWinFocusLost(void) const
+{
+       return __isWinFocusLost;
+}
+
+
+void
+_WebImpl::SetWinFocusLost(bool isWinFocusLost)
+{
+       __isWinFocusLost = isWinFocusLost;
+}
+
+
 Rectangle
 _WebImpl::GetPreviousKeypadBounds(void) const
 {
@@ -4045,9 +4371,31 @@ _WebImpl::OnTextValueChangeCanceled(const Control& source)
 void
 _WebImpl::OnTextValueChanged(const Control& source)
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
        std::unique_ptr<char[]> pText(_StringConverter::CopyToCharArrayN(__pKeypad->GetText()));
+       SysTryReturnVoidResult(NID_WEB_CTRL, pText.get(), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory allocation failed.");
+
+       Point absPoint(_CoordinateSystemUtils::ConvertToInteger(__pWebCore->GetAbsoluteCoordinate(__pWebCore->GetTouchPosition())));
+
+       Ewk_Hit_Test* pEwkHitTest = ewk_view_hit_test_new(pWebview, absPoint.x, absPoint.y, EWK_HIT_TEST_MODE_ALL);
+       SysTryReturnVoidResult(NID_WEB_CTRL, pEwkHitTest, E_SYSTEM, "[E_SYSTEM] Failed to get hit test.");
 
-       ewk_view_focused_input_element_value_set(__pWebCore->GetWebNativeNode(), pText.get());
+       String tagName(ewk_hit_test_tag_name_get(pEwkHitTest));
+       if (tagName.Equals(L"INPUT", false))
+       {
+               ewk_view_focused_input_element_value_set(__pWebCore->GetWebNativeNode(), pText.get());
+       }
+       else
+       {
+               ewk_view_command_execute(pWebview, "SelectAll", null);
+               ewk_view_command_execute(pWebview, "Delete", null);
+               ewk_view_command_execute(pWebview, "InsertText", pText.get());
+       }
 
        RemoveFullScreenKeypad();
 }
@@ -4385,7 +4733,7 @@ _WebImpl::VibrationRequested(uint64_t duration)
 
        __pVibrator.reset();
 
-       std::unique_ptr<_VibratorImpl> pVibrator(new (std::nothrow) _VibratorImpl);
+       std::unique_ptr<Vibrator> pVibrator(new (std::nothrow) Vibrator());
        SysTryReturnResult(NID_WEB_CTRL, pVibrator.get(), E_OUT_OF_MEMORY, "Memory allocation failed.");
 
        r = pVibrator->Construct();
@@ -4395,7 +4743,7 @@ _WebImpl::VibrationRequested(uint64_t duration)
 
        IntensityDurationVibrationPattern pattern = {static_cast< int >(duration), -1};
 
-       r = __pVibrator->Start(&pattern, 1, 1);
+       r = __pVibrator->Start(&pattern, 1);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
        return E_SUCCESS;
@@ -4456,20 +4804,13 @@ _WebImpl::ShowAuthenticationPopup(const String& host, const String& realm, Authe
        r = pAuthPopup->Construct(host, realm, pAuthChallenge);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
+       __pAuthPopup.reset();
        __pAuthPopup = std::move(pAuthPopup);
 
-       int modalResult = 0;
-
-       r = __pAuthPopup->ShowAndWait(modalResult);
-       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
-CATCH:
-       if (__pAuthPopup)
-       {
-               __pAuthPopup.reset();
-       }
+       r = __pAuthPopup->ShowPopup();
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       return r;
+       return E_SUCCESS;
 }
 
 
@@ -4648,14 +4989,13 @@ _WebImpl::ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPol
        {
        case USER_CONFIRM_USERMEDIA:
        {
-        __pUserMediaConfirmPopup.reset();
+               __pUserMediaConfirmPopup.reset();
 
                __pUserMediaConfirmPopup = std::move(pUserConfirmPopup);
 
                r = __pUserMediaConfirmPopup->ShowPopup();
                SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pUserMediaConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-               __pUserMediaConfirmPopup.release();
                break;
        }
        case USER_CONFIRM_GEOLOCATION:
@@ -4667,7 +5007,6 @@ _WebImpl::ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPol
                r = __pGeolocationConfirmPopup->ShowPopup();
                SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pGeolocationConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-               __pGeolocationConfirmPopup.release();
                break;
        }
        case USER_CONFIRM_NOTIFICATION:
@@ -4679,7 +5018,6 @@ _WebImpl::ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPol
                r = __pNotificationConfirmPopup->ShowPopup();
                SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pNotificationConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-               __pNotificationConfirmPopup.release();
                break;
        }
        case USER_SCRIPT_ALERT:
@@ -4691,7 +5029,6 @@ _WebImpl::ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPol
                r = __pScriptAlertConfirmPopup->ShowPopup();
                SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pScriptAlertConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-               __pScriptAlertConfirmPopup.release();
                break;
        }
        case USER_SCRIPT_CONFIRM:
@@ -4703,7 +5040,16 @@ _WebImpl::ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPol
                r = __pScriptConfirmPopup->ShowPopup();
                SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pScriptConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
 
-               __pScriptConfirmPopup.release();
+               break;
+       }
+       case USER_BEFORE_UNLOAD_CONFIRM:
+       {
+               __pBeforeUnloadConfirmPopup.reset();
+
+               __pBeforeUnloadConfirmPopup = std::move(pUserConfirmPopup);
+
+               r = __pBeforeUnloadConfirmPopup->ShowPopup();
+               SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, __pBeforeUnloadConfirmPopup.reset(), r, "[%s] Propagating.", GetErrorMessage(r));
 
                break;
        }
@@ -4743,10 +5089,6 @@ _WebImpl::GetParentFormImpl(_ControlImpl* pControlImpl)
 bool 
 _WebImpl::OnFocusGained(const _ControlImpl& source)
 {
-       Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
-       SysAssertf(pSettings, "Failed to get webkit instance.");
-       ewk_settings_clear_text_selection_automatically_set(pSettings, true);
-
        return false;
 }
 
@@ -4754,19 +5096,17 @@ _WebImpl::OnFocusGained(const _ControlImpl& source)
 bool 
 _WebImpl::OnFocusLost(const _ControlImpl& source)
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return false;
+       }
+
        if(IsKeypadVisible() == true)
        {
                SetKeypadOpened(true);
-
-               SetKeypadVisibleState(false);
        }
 
-       Ewk_Settings* pSettings = ewk_view_settings_get(__pWebCore->GetWebNativeNode());
-       SysAssertf(pSettings, "Failed to get webkit instance.");
-       ewk_settings_clear_text_selection_automatically_set(pSettings, false);
-
-       evas_object_focus_set(__pWebCore->GetWebNativeNode(), EINA_FALSE);
-
        return false;
 }
 
@@ -4788,12 +5128,6 @@ _WebImpl::OnPreAttachedToMainTree(void)
 {
        result r = E_SUCCESS;
 
-       if (IsVisible() == true)
-       {
-               _WebManager* pWebManager = _WebManager::GetInstance();
-               pWebManager->SetActiveWeb(this);
-       }
-
        r = _ContainerImpl::OnPreAttachedToMainTree();
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
@@ -4803,16 +5137,26 @@ _WebImpl::OnPreAttachedToMainTree(void)
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
                _ControlManager* pControlManager = _ControlManager::GetInstance();
-               SysTryReturnResult(NID_WEB_CTRL, pControlManager, E_SYSTEM, "Failed to get the ControlManager instance.");
+               SysTryReturnResult(NID_WEB_CTRL, pControlManager, E_SYSTEM, "Failed to get the _ControlManager instance.");
                OnChangeLayout(pControlManager->GetScreenRotation());
 
                r = InitializeSetting();
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
+               _SettingInfoImpl::AddSettingEventListener(*this);
+
                _WebManager* pWebManager = _WebManager::GetInstance();
+               SysTryReturnResult(NID_WEB_CTRL, pWebManager, E_SYSTEM, "Failed to get the _WebManager instance.");
                pWebManager->AddWeb(reinterpret_cast< int >(this));
        }
 
+       if (IsVisible() == true)
+       {
+               _WebManager* pWebManager = _WebManager::GetInstance();
+               SysTryReturnResult(NID_WEB_CTRL, pWebManager, E_SYSTEM, "Failed to get the _WebManager instance.");
+               pWebManager->SetActiveWeb(this);
+       }
+
        return E_SUCCESS;
 }
 
@@ -4822,19 +5166,42 @@ _WebImpl::OnDetachingFromMainTree(void)
 {
        result r = E_SUCCESS;
 
-       _WebManager* pWebManager = _WebManager::GetInstance();
-       pWebManager->RemoveActiveWeb(this);
-
        r = _ContainerImpl::OnDetachingFromMainTree();
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
+       _WebManager* pWebManager = _WebManager::GetInstance();
+       SysTryReturnResult(NID_WEB_CTRL, pWebManager, E_SYSTEM, "Failed to get the _WebManager instance.");
+       pWebManager->RemoveActiveWeb(this);
+
        return E_SUCCESS;
 }
 
 
 void
+_WebImpl::OnSettingChanged(String& key)
+{
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
+       if (key == L"http://tizen.org/setting/font.type")
+       {
+               ewk_view_use_settings_font(pWebview);
+       }
+}
+
+
+void
 _WebImpl::OnChangeLayout(_ControlRotation rotation)
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
        int degree = 0;
 
        switch (rotation)
@@ -4843,18 +5210,18 @@ _WebImpl::OnChangeLayout(_ControlRotation rotation)
                        degree =  0;
                        break;
                case _CONTROL_ROTATION_90:
-                       degree =  90;
+                       degree =  -90;
                        break;
                case _CONTROL_ROTATION_180:
                        degree =  180;
                        break;
                case _CONTROL_ROTATION_270:
-                       degree =  -90;
+                       degree =  90;
                        break;
                default:
                        SysAssert(false);
        }
-       ewk_view_orientation_send(__pWebCore->GetWebNativeNode(), degree);
+       ewk_view_orientation_send(pWebview, degree);
 }
 
 
@@ -4878,22 +5245,52 @@ _WebImpl::OnChangeLayout(_ControlOrientation orientation)
                pWebNotification = static_cast< _WebNotification* >(pEnum->GetCurrent());
                pWebNotification->OnChangeLayout();
        }
+
+       if (IsKeypadVisible())
+       {
+               _ICoordinateSystemTransformer* pXformer = _CoordinateSystem::GetInstance()->GetInverseTransformer();
+               SysAssertf(pXformer, "Failed to get CoordinateTransformer");
+
+               _FormImpl* pFormImpl = GetParentFormImpl(dynamic_cast< _ControlImpl* >(this));
+               pFormImpl->DeflateClientRectHeight(pXformer->TransformVertical(GetPreviousKeypadBounds().height));
+       }
 }
 
 
 void
 _WebImpl::OnAncestorVisibleStateChanged(const _Control& control)
 {
+       Evas_Object* pWebview = __pWebCore->GetWebNativeNode();
+       if (!pWebview)
+       {
+               return;
+       }
+
        _WebManager* pWebManager = _WebManager::GetInstance();
+       SysTryReturnVoidResult(NID_WEB_CTRL, pWebManager, E_SYSTEM, "[E_SYSTEM] Failed to get the _WebManager instance.");
        if (IsVisible() == true)
        {
                pWebManager->SetActiveWeb(this);
-               ewk_view_page_visibility_state_set(__pWebCore->GetWebNativeNode(), EWK_PAGE_VISIBILITY_STATE_VISIBLE, false);
+               if (IsLoading())
+               {
+//                     ewk_view_page_visibility_state_set(pWebview, EWK_PAGE_VISIBILITY_STATE_VISIBLE, true);
+               }
+               else
+               {
+//                     ewk_view_page_visibility_state_set(pWebview, EWK_PAGE_VISIBILITY_STATE_VISIBLE, false);
+               }
        }
        else
        {
                pWebManager->RemoveActiveWeb(this);
-               ewk_view_page_visibility_state_set(__pWebCore->GetWebNativeNode(), EWK_PAGE_VISIBILITY_STATE_HIDDEN, false);
+               if (IsLoading())
+               {
+//                     ewk_view_page_visibility_state_set(pWebview, EWK_PAGE_VISIBILITY_STATE_HIDDEN, true);
+               }
+               else
+               {
+//                     ewk_view_page_visibility_state_set(pWebview, EWK_PAGE_VISIBILITY_STATE_HIDDEN, false);
+               }
        }
 }
 
@@ -4926,6 +5323,14 @@ _WebImpl::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::ILi
        case ID_USER_SCRIPT_CONFIRM_CLOSE:
                __pScriptConfirmPopup.reset();
                break;
+
+       case ID_USER_BEFORE_UNLOAD_CONFIRM_CLOSE:
+               __pBeforeUnloadConfirmPopup.reset();
+               break;
+
+       case ID_USER_SCRIPT_SELECTBOX_CLOSE:
+               __pSelectBox.reset();
+               break;
        default:
                break;
        }
@@ -4967,7 +5372,8 @@ _WebImpl::ShowColorPicker(int red, int green, int blue, int alpha, Color& color)
 
        __pColorPicker = std::move(pColorHadler);
 
-       r = __pColorPicker->ShowPopup();
+       int modalResult = 0;
+       r = __pColorPicker->ShowAndWait(modalResult);
        SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
        if (__pColorPicker)
@@ -4999,7 +5405,8 @@ _WebImpl::ShowDatePicker(Ewk_Input_Type inputType, const char* inputValue, Strin
 
        __pDatePicker = std::move(pInputPicker);
 
-       r = __pDatePicker->ShowPopup();
+       int modalResult = 0;
+       r = __pDatePicker->ShowAndWait(modalResult);
        SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
        if (__pDatePicker)
@@ -5340,11 +5747,4 @@ _WebImpl::SetWebNotification(_WebNotification* pWebNotification)
 }
 
 
-void
-_WebImpl::OnDownloadCompleted(RequestId reqId, const String &path)
-{
-       _ContentManagerImpl::ScanFile(path);
-}
-
-
 }}} // Tizen::Web::Controls
index d62b8c7..137a022 100755 (executable)
  *\r
  * The file contains the definition of _WebManager class.\r
  */\r
-\r
+#include <pthread.h>\r
+#include <net_connection.h>\r
+#include <FAppApp.h>\r
 #include <FBaseSysLog.h>\r
+#include <FIoDbEnumerator.h>\r
 #include <FUiControl.h>\r
+#include <FIo_DirectoryImpl.h>
+#include <FIo_DatabaseImpl.h>
+#include <FIo_FileImpl.h>\r
 #include <FUiCtrl_FormImpl.h>\r
+#include <FIo_DirectoryImpl.h>
+#include <FIo_DatabaseImpl.h>
+#include <FIo_FileImpl.h>
+#include "FWebCtrl_EflWebkit.h"\r
+#include "FWebCtrl_Web.h"\r
 #include "FWebCtrl_WebImpl.h"\r
 #include "FWebCtrl_WebManager.h"\r
 #include "FWebCtrl_WebPopup.h"\r
 \r
 using namespace Tizen::Base;\r
 using namespace Tizen::Base::Collection;\r
+using namespace Tizen::Io;\r
 using namespace Tizen::Ui;\r
 using namespace Tizen::Ui::Controls;\r
 \r
 namespace Tizen { namespace Web { namespace Controls\r
 {\r
 \r
+\r
+_WebManager* _WebManager::__pInstance = null;\r
+\r
+\r
+extern const wchar_t CUSTOM_DB_DIRECTORY_PATH[] = L"data/.webkit/customDatabase/";
+extern const wchar_t USER_CONFIRM_DB_NAME[] = L"userConfirm.db";
+extern const wchar_t GEOLOCATION_TABLE_NAME[] = L"geolocationPermission";
+extern const wchar_t CUSTOM_PROTOCOL_TABLE_NAME[] = L"customProtocol";
+extern const wchar_t CUSTOM_CONTENT_TABLE_NAME[] = L"customContent";
+extern const wchar_t CERTIFICATE_TABLE_NAME[] = L"certificate";
+
+
+static const int CUSTOM_DB_TABLE_COUNT= 4;\r
+\r
+\r
 _WebManager::_WebManager(void)\r
        : __pWebList(null)\r
        , __pCallbackList(null)\r
        , __pActiveWeb(null)\r
        , __pActivePopup(null)\r
+       , __pProxy(null)\r
 {\r
 }\r
 \r
 _WebManager::~_WebManager(void)\r
 {\r
+       free(__pProxy);\r
+       ClearCertificateDb();\r
 }\r
 \r
-_WebManager*\r
-_WebManager::GetInstance(void)\r
+\r
+void\r
+_WebManager::InitWebManager(void)\r
 {\r
        result r = E_SUCCESS;\r
-       static _WebManager* pWebMgr = null;\r
 \r
-       if (pWebMgr == null)\r
-       {\r
-               pWebMgr = new (std::nothrow) _WebManager();\r
-               SysTryReturn(NID_WEB_CTRL, pWebMgr != null, null, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] _WebManager allocation failed.");\r
+       std::unique_ptr<_WebManager> pInstance(new (std::nothrow) _WebManager());\r
+       SysTryReturnVoidResult(NID_WEB_CTRL, pInstance.get(), E_OUT_OF_MEMORY, "[%s] Memory allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));\r
 \r
-               r = pWebMgr->Construct();\r
-               SysTryCatch(NID_WEB_CTRL, !IsFailed(r), , r, "[%s] _WebManager construction failed.", GetErrorMessage(r));\r
-       }\r
+       r = pInstance->Construct();\r
+       SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
+       __pInstance = pInstance.release();\r
+       std::atexit(DestroyWebManager);\r
+}\r
+\r
+\r
+void\r
+_WebManager::DestroyWebManager(void)\r
+{\r
+       delete __pInstance;\r
+       __pInstance = null;\r
+}\r
 \r
-       return pWebMgr;\r
 \r
-CATCH:\r
-       delete pWebMgr;\r
-       pWebMgr = null;\r
+_WebManager*\r
+_WebManager::GetInstance(void)\r
+{\r
+       static pthread_once_t onceBlock = PTHREAD_ONCE_INIT;\r
+       if (__pInstance== null)\r
+       {\r
+               ClearLastResult();\r
+               pthread_once(&onceBlock, InitWebManager);\r
+               result r = GetLastResult();\r
+               if (IsFailed(r))\r
+               {\r
+                       onceBlock = PTHREAD_ONCE_INIT;\r
+               }\r
+       }\r
 \r
-       return null;\r
+       return __pInstance;\r
 }\r
 \r
+\r
 result\r
 _WebManager::Construct(void)\r
 {\r
@@ -88,23 +138,183 @@ _WebManager::Construct(void)
        r = pCallbackList->Construct();\r
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
+       r = InitializeProxyAddress();\r
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
+       r = CreateResourceDirectory();\r
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
+       r = InitializeCustomDb();\r
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
        __pWebList = std::move(pWebList);\r
        __pCallbackList = std::move(pCallbackList);\r
 \r
        return E_SUCCESS;\r
 }\r
 \r
+\r
+void
+_WebManager::ClearCertificateDb(void)\r
+{
+       result r = E_SUCCESS;
+
+       String certificatePath(Tizen::App::App::GetInstance()->GetAppRootPath() + CUSTOM_DB_DIRECTORY_PATH + USER_CONFIRM_DB_NAME);
+       String table(CERTIFICATE_TABLE_NAME);
+       _DatabaseImpl db;
+
+       r = db.Construct(certificatePath, "r+", null);
+       SysTryReturnVoidResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       db.BeginTransaction();
+
+       r = db.ExecuteSql(L"Delete From " + table, true);
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       db.CommitTransaction();
+
+       return;
+
+CATCH:
+       db.RollbackTransaction();
+}\r
+\r
+\r
+result\r
+_WebManager::InitializeProxyAddress(void)\r
+{\r
+       int ret = -1;\r
+       connection_h handle = null;\r
+       char* pProxy = null;\r
+\r
+       ret = connection_create(&handle);
+       SysTryReturnResult(NID_WEB_CTRL, ret == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has been occurred. Failed to create connection.");
+\r
+       connection_address_family_e family = CONNECTION_ADDRESS_FAMILY_IPV4;
+
+       ret = connection_get_proxy(handle, family, &pProxy);
+       SysTryReturnResult(NID_WEB_CTRL, ret == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has been occurred. Failed to get proxy address.");\r
+\r
+       ret = connection_destroy(handle);
+       SysTryReturnResult(NID_WEB_CTRL, ret == CONNECTION_ERROR_NONE, E_SYSTEM, "A system error has been occurred. Failed to destroy connection.");\r
+\r
+       __pProxy = pProxy;\r
+\r
+       return E_SUCCESS;\r
+}\r
+\r
+\r
+result
+_WebManager::CreateResourceDirectory(void) const\r
+{
+       String html5FeaturesPath(Tizen::App::App::GetInstance()->GetAppRootPath() + CUSTOM_DB_DIRECTORY_PATH);
+
+       if (!_FileImpl::IsFileExist(html5FeaturesPath))
+       {
+               result r = E_SUCCESS;
+
+               r = _DirectoryImpl::Create(html5FeaturesPath, true);
+               SysTryReturnResult(NID_WEB_CTRL, r == E_SUCCESS, E_SYSTEM, "A system error has been occurred. create html5 features directory.");
+       }
+
+       return E_SUCCESS;
+}
+
+
+result
+_WebManager::InitializeCustomDb(void) const\r
+{
+       result r = E_SUCCESS;
+
+       _DatabaseImpl db;
+       String path(Tizen::App::App::GetInstance()->GetAppRootPath() + CUSTOM_DB_DIRECTORY_PATH + USER_CONFIRM_DB_NAME);
+       String geolocationTable(GEOLOCATION_TABLE_NAME);
+       String protocolTable(CUSTOM_PROTOCOL_TABLE_NAME);
+       String contentTable(CUSTOM_CONTENT_TABLE_NAME);
+       String certificateTable(CERTIFICATE_TABLE_NAME);
+
+       r = db.Construct(path, "a+", null);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       std::unique_ptr<DbEnumerator>   pEnum(db.QueryN(L"Select count(name) from sqlite_master Where type='table' And name in ('" + geolocationTable + L"', '" + protocolTable + L"', '" + contentTable + L"', '" + certificateTable + L"')"));
+       if (pEnum.get())
+       {
+               int count = 0;
+
+               r = pEnum->MoveNext();
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, false, r, "[%s] Propagating.", GetErrorMessage(r));
+
+               r = pEnum->GetIntAt(0, count);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, false, r, "[%s] Propagating.", GetErrorMessage(r));
+
+               if (count == CUSTOM_DB_TABLE_COUNT)
+               {
+                       return E_SUCCESS;
+               }
+       }
+
+       pEnum.reset();
+       pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select name from sqlite_master Where type='table' And name = '" + geolocationTable + L"'"));
+       if (!pEnum.get())
+       {
+               r = db.ExecuteSql(
+                       L"CREATE TABLE IF NOT EXISTS " + geolocationTable + L"(id INTEGER PRIMARY KEY AUTOINCREMENT, origin TEXT, permission INTEGER)",
+                       true);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       }
+
+       pEnum.reset();
+       pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select name from sqlite_master Where type='table' And name = '" + protocolTable + L"'"));
+       if (!pEnum.get())
+       {
+               r = db.ExecuteSql(
+                       L"CREATE TABLE IF NOT EXISTS " + protocolTable + L"(id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, url TEXT, mime TEXT, allow INTEGER)",
+                       true);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       }
+
+       pEnum.reset();
+       pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select name from sqlite_master Where type='table' And name = '" + contentTable + L"'"));
+       if (!pEnum.get())
+       {
+               r = db.ExecuteSql(
+                       L"CREATE TABLE IF NOT EXISTS " + contentTable + L"(id INTEGER PRIMARY KEY AUTOINCREMENT, baseUrl TEXT, url TEXT, mime TEXT, allow INTEGER)",
+                       true);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       }
+
+       pEnum.reset();
+       pEnum = std::unique_ptr<DbEnumerator>(db.QueryN(L"Select name from sqlite_master Where type='table' And name = '" + certificateTable + L"'"));
+       if (!pEnum.get())
+       {
+               r = db.ExecuteSql(
+                       L"CREATE TABLE IF NOT EXISTS " + certificateTable + L"(id INTEGER PRIMARY KEY AUTOINCREMENT, pem TEXT, allow INTEGER)",
+                       true);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       }
+
+       return E_SUCCESS;
+}
+\r
+\r
 result\r
 _WebManager::AddWeb(int webAdress)\r
 {\r
        result r = E_SUCCESS;\r
 \r
+       _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(webAdress);\r
+       _Web* pWebCore = dynamic_cast< _Web* >(&(pImpl->GetCore()));\r
+\r
+       r = pWebCore->GetEflWebkit()->SetProxyAddress(__pProxy);\r
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
+\r
        r = __pWebList->Add(webAdress);\r
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
        return E_SUCCESS;\r
 }\r
 \r
+\r
 result\r
 _WebManager::RemoveWeb(int webAdress)\r
 {\r
@@ -113,12 +323,12 @@ _WebManager::RemoveWeb(int webAdress)
        r = __pWebList->Remove(webAdress);\r
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
 \r
-       r = __pCallbackList->Remove(webAdress);\r
-       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));\r
+       __pCallbackList->Remove(webAdress);\r
 \r
        return E_SUCCESS;\r
 }\r
 \r
+\r
 bool\r
 _WebManager::IsValidWeb(int webAdress) const\r
 {\r
@@ -137,6 +347,7 @@ _WebManager::AddCallback(int callerAdress, int callbackAdress)
        return E_SUCCESS;\r
 }\r
 \r
+\r
 result\r
 _WebManager::RemoveCallback(int callerAdress, int callbackAdress)\r
 {\r
@@ -148,6 +359,7 @@ _WebManager::RemoveCallback(int callerAdress, int callbackAdress)
        return E_SUCCESS;\r
 }\r
 \r
+\r
 bool\r
 _WebManager::IsValidCallback(int callerAdress, int callbackAdress) const\r
 {\r
@@ -159,6 +371,7 @@ _WebManager::IsValidCallback(int callerAdress, int callbackAdress) const
        return ret;\r
 }\r
 \r
+\r
 void\r
 _WebManager::SetActiveWeb(Tizen::Web::Controls::_WebImpl* pWebAddress)\r
 {\r
@@ -195,6 +408,7 @@ _WebManager::SetActiveWeb(Tizen::Web::Controls::_WebImpl* pWebAddress)
        }\r
 }\r
 \r
+\r
 void\r
 _WebManager::RemoveActiveWeb(Tizen::Web::Controls::_WebImpl* pWebAddress)\r
 {\r
@@ -204,12 +418,14 @@ _WebManager::RemoveActiveWeb(Tizen::Web::Controls::_WebImpl* pWebAddress)
        }\r
 }\r
 \r
+\r
 void\r
 _WebManager::SetActivePopup(Tizen::Web::Controls::_WebPopup* pPopupAddress)\r
 {\r
        __pActivePopup = pPopupAddress;\r
 }\r
 \r
+\r
 void\r
 _WebManager::RemoveActivePopup(Tizen::Web::Controls::_WebPopup* pPopupAddress)\r
 {\r
@@ -219,4 +435,5 @@ _WebManager::RemoveActivePopup(Tizen::Web::Controls::_WebPopup* pPopupAddress)
        }\r
 }\r
 \r
+\r
 } } }\r
index 3519729..57061fd 100755 (executable)
 \r
 namespace Tizen { namespace Web { namespace Controls\r
 {\r
+\r
+_OSP_EXPORT_ extern const wchar_t CUSTOM_DB_DIRECTORY_PATH[];
+_OSP_EXPORT_ extern const wchar_t USER_CONFIRM_DB_NAME[];
+_OSP_EXPORT_ extern const wchar_t GEOLOCATION_TABLE_NAME[];
+_OSP_EXPORT_ extern const wchar_t CUSTOM_PROTOCOL_TABLE_NAME[];
+_OSP_EXPORT_ extern const wchar_t CUSTOM_CONTENT_TABLE_NAME[];
+_OSP_EXPORT_ extern const wchar_t CERTIFICATE_TABLE_NAME[];\r
+\r
 class _WebImpl;\r
 class _WebPopup;\r
 \r
@@ -37,7 +45,7 @@ class _WebManager
        : public Tizen::Base::Object\r
 {\r
 public:\r
-       static _WebManager* GetInstance(void);\r
+       virtual ~_WebManager(void);\r
        \r
        result AddWeb(int webAdress);\r
        result RemoveWeb(int webAdress);\r
@@ -52,11 +60,22 @@ public:
        void SetActivePopup(Tizen::Web::Controls::_WebPopup* pPopupAddress);\r
        void RemoveActivePopup(Tizen::Web::Controls::_WebPopup* pPopupAddress);\r
 \r
+       static _WebManager* GetInstance(void);\r
+\r
 private:\r
        _WebManager(void);\r
        _WebManager(const _WebManager& rhs);\r
-       virtual ~_WebManager(void);\r
+\r
        result Construct(void);\r
+\r
+       static void InitWebManager(void);\r
+       static void DestroyWebManager(void);\r
+\r
+       void ClearCertificateDb(void);\r
+       result InitializeProxyAddress(void);\r
+       result CreateResourceDirectory(void) const;
+       result InitializeCustomDb(void) const;\r
+\r
        _WebManager& operator=(const _WebManager& rhs);\r
 \r
 private:\r
@@ -65,6 +84,9 @@ private:
 \r
        _WebImpl* __pActiveWeb;\r
        _WebPopup* __pActivePopup;\r
+       char* __pProxy;\r
+\r
+       static _WebManager* __pInstance;\r
 };\r
 \r
 } } }\r
index f46f224..98f3fad 100755 (executable)
@@ -27,6 +27,7 @@
 #include <FUiAnimPointAnimation.h>
 #include <FUiAnimFloatAnimation.h>
 #include <FUiAnimAnimationTransaction.h>
+#include <FUiAnimVisualElementPropertyAnimation.h>
 #include <FUiCtrlButton.h>
 #include "FWebCtrl_WebImpl.h"
 #include "FWebCtrl_WebNotificationHandler.h"
@@ -160,19 +161,19 @@ _WebNotification::LaunchNotification()
        r = Window::Show();
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Error Propogating.", GetErrorMessage(r));
 
-       Point start(0,-200),end;
-       PointAnimation pointAnimation(Point(0, 0), Point(0, 0), 0, ANIMATION_INTERPOLATOR_LINEAR);
+       FloatRectangle rect(static_cast< float >(NOTIFCATION_RECT_AREA.x),static_cast< float >(NOTIFCATION_RECT_AREA.y),static_cast< float >(NOTIFCATION_RECT_AREA.width),static_cast< float >(NOTIFCATION_RECT_AREA.height));
 
-       end = Point(0,0);
+       FloatRectangle __endRect = rect;
+       FloatRectangle __startRect = FloatRectangle(rect.x, rect.height - 200, rect.width, rect.height);
 
-       pointAnimation.SetStartValue(start);
-       pointAnimation.SetEndValue(end);
-       pointAnimation.SetDuration(2000);
-       pointAnimation.SetAutoReverseEnabled(false);
+       std::unique_ptr<VisualElementPropertyAnimation> pAnimation(new (std::nothrow) VisualElementPropertyAnimation());
+       SysTryReturnResult(NID_WEB_CTRL, pAnimation.get(), E_OUT_OF_MEMORY, "Memory allocation failed.");
 
-       ControlAnimator *pAnimator = this->GetControlAnimator();
-       r = pAnimator->StartUserAnimation(ANIMATION_TARGET_POSITION, pointAnimation);
-       SysTryReturnResult(NID_WEB_CTRL, r == E_SUCCESS, r, "[%s] Error Propagated.", GetErrorMessage(r));
+       pAnimation->SetPropertyName(L"bounds");
+       pAnimation->SetStartValue(Variant(__startRect));
+       pAnimation->SetEndValue(Variant(__endRect));
+       pAnimation->SetDuration(2000);
+       this->GetVisualElement()->AddAnimation(L"bounds", *pAnimation);
 
        __pTimer->Start(15000);
        return E_SUCCESS;
@@ -182,25 +183,17 @@ _WebNotification::LaunchNotification()
 void
 _WebNotification::OnTimerExpired(Timer& timer)
 {
-       int transactionId = 0;
-       int duration = 1000;
        float start = 1.0f;
        float end = 0.0f;
 
-       ParallelAnimationGroup showAnim;
-       FloatAnimation floatAnim(start, end, duration, ANIMATION_INTERPOLATOR_LINEAR);
-       showAnim.AddAnimation(ANIMATION_TARGET_ALPHA, floatAnim);
+       std::unique_ptr<VisualElementPropertyAnimation> pAnimation(new (std::nothrow) VisualElementPropertyAnimation());
+       SysTryReturnVoidResult(NID_WEB_CTRL, pAnimation.get(), E_OUT_OF_MEMORY, "Memory allocation failed.");
 
-       AnimationTransaction::Begin(transactionId);
-
-       ControlAnimator *pAnimator = this->GetControlAnimator();
-       pAnimator->SetAnimation(ANIMATION_TRIGGER_SHOW_STATE_CHANGE, &showAnim);
-       pAnimator->SetShowState(static_cast< int >(start));
-
-       AnimationTransaction::Commit();
-       __pWebImpl->ClearWebNotification(this);
-
-       delete this;
+       pAnimation->SetPropertyName(L"opacity");
+       pAnimation->SetStartValue(Variant(start));
+       pAnimation->SetEndValue(Variant(end));
+       pAnimation->SetDuration(2000);
+       this->GetVisualElement()->AddAnimation(L"opacity", *pAnimation);
 }
 
 
index e1ca104..c9b6769 100755 (executable)
@@ -21,6 +21,7 @@
  */
 #include <FBaseColIList.h>
 #include <FBaseSysLog.h>
+#include <FGrpColor.h>
 #include <FUiCtrlButton.h>
 #include <FUiCtrlPanel.h>
 #include <FUiVerticalBoxLayout.h>
@@ -51,6 +52,9 @@ _WebPopup::_WebPopup(void)
 
 _WebPopup::~_WebPopup(void)
 {
+       _WebManager* pWebManager = _WebManager::GetInstance();
+       pWebManager->RemoveActivePopup(this);
+
        if (IsModalPopup())
        {
                HidePopup();
@@ -65,7 +69,6 @@ _WebPopup::Construct(bool hasTitle, const Dimension& popupDim)
        VerticalBoxLayout layout;
 
        Dimension dim(popupDim);
-       dim.height += __pWebPopupData->bottomMargin;
 
        if (hasTitle)
        {
@@ -125,15 +128,13 @@ _WebPopup::HidePopup(int modalResult)
        r = SetShowState(false);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
-       _WebManager* pWebManager = _WebManager::GetInstance();
-       pWebManager->RemoveActivePopup(this);
-
        if (__isModal)
        {
                __modal = modalResult;
                __isModal = false;
 
-               return EndModal(__modal);
+               r = EndModal(__modal);
+               SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
        }
 
        return E_SUCCESS;
@@ -158,11 +159,15 @@ _WebPopup::CreateAndAddPanel(void)
        std::unique_ptr<Panel> pPanel(new (std::nothrow) Panel());
        SysTryReturn(NID_WEB_CTRL, pPanel.get(), null, E_OUT_OF_MEMORY, "[%s] Memory Allocation failed.", GetErrorMessage(E_OUT_OF_MEMORY));
 
-       Rectangle panelRect(0, 0, __pWebPopupData->popupDim.width, __pWebPopupData->btnDim.height);
+       Rectangle panelRect(0, 0, GetSize().width, __pWebPopupData->panelHeight);
 
-       result r = pPanel->Construct(panelRect);
+       result r = pPanel->Construct(panelRect, GROUP_STYLE_BOTTOM);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
 
+       Color buttonBgColor(0x00000000);
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BG_NORMAL, buttonBgColor);
+       pPanel->SetBackgroundColor(buttonBgColor);
+
        r = AddControl(*pPanel);
        SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, null, r, "[%s] Propagating.", GetErrorMessage(r));
 
@@ -183,9 +188,56 @@ _WebPopup::CreateAndAddButtons(const IList& buttonIds, const IList& buttonTitles
        SysTryReturnResult(NID_WEB_CTRL, idCount > 0 && titleCount > 0 && idCount == titleCount, E_INVALID_DATA, "[E_INVALID_DATA] mismatch in count of Ids and Ttitles.");
 
        int buttonMargin = __pWebPopupData->spacePad/2;
-       int buttonWidth = (__pWebPopupData->popupDim.width - buttonMargin*(idCount+1)) / idCount;
+       if (idCount == 1)
+       {
+               GET_SHAPE_CONFIG(MESSAGEBOX::BUTTON_SIDE_MARGIN_01, _CONTROL_ORIENTATION_PORTRAIT, buttonMargin);
+       }
+       int buttonWidth = (GetSize().width - buttonMargin*(idCount+1)) / idCount;
+       int buttonTopMargin = (__pWebPopupData->panelHeight - __pWebPopupData->btnDim.height)/2;
 
        result r = E_SUCCESS;
+
+       //Button Colors
+       Color buttonColorNormal(0x00000000);
+       Color buttonColorPressed(0x00000000);
+       Color buttonColorDisabled(0x00000000);
+       Color buttonColorHighlighted(0x00000000);
+       Color buttonTextNormal(0x00000000);
+       Color buttonTextPressed(0x00000000);
+       Color buttonTextDisabled(0x00000000);
+       Color buttonTextHighlighted(0x00000000);
+
+       Bitmap* pComposedButtonBgNormal = null;
+       Bitmap* pComposedButtonBgPressed = null;
+       Bitmap* pComposedButtonBgDisabled = null;
+       Bitmap* pComposedButtonBgHighlighted = null;
+
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BUTTON_BG_NORMAL, buttonColorNormal);
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BUTTON_BG_PRESSED, buttonColorPressed);
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BUTTON_BG_DISABLED, buttonColorDisabled);
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BUTTON_BG_HIGHLIGHTED, buttonColorHighlighted);
+
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BUTTON_TEXT_NORMAL, buttonTextNormal);
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BUTTON_TEXT_PRESSED, buttonTextPressed);
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BUTTON_TEXT_DISABLED, buttonTextDisabled);
+       GET_COLOR_CONFIG(MESSAGEBOX::BOTTOM_BUTTON_TEXT_HIGHLIGHTED, buttonTextHighlighted);
+
+       r = GET_REPLACED_BITMAP_CONFIG_N(MESSAGEBOX::BOTTOM_BUTTON_BG_NORMAL, BITMAP_PIXEL_FORMAT_ARGB8888, buttonColorNormal, pComposedButtonBgNormal);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       std::unique_ptr< Bitmap > pComposedBtnBgNormal(pComposedButtonBgNormal);
+
+       r = GET_REPLACED_BITMAP_CONFIG_N(MESSAGEBOX::BOTTOM_BUTTON_BG_PRESSED, BITMAP_PIXEL_FORMAT_ARGB8888, buttonColorPressed, pComposedButtonBgPressed);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       std::unique_ptr< Bitmap > pComposedBtnBgPressed(pComposedButtonBgPressed);
+
+       r = GET_REPLACED_BITMAP_CONFIG_N(MESSAGEBOX::BOTTOM_BUTTON_BG_DISABLED, BITMAP_PIXEL_FORMAT_ARGB8888, buttonColorDisabled, pComposedButtonBgDisabled);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       std::unique_ptr< Bitmap > pComposedBtnBgDisabled(pComposedButtonBgDisabled);
+
+       r = GET_REPLACED_BITMAP_CONFIG_N(MESSAGEBOX::BOTTOM_BUTTON_BG_HIGHLIGHTED, BITMAP_PIXEL_FORMAT_ARGB8888, buttonColorHighlighted, pComposedButtonBgHighlighted);
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+       std::unique_ptr< Bitmap > pComposedBtnBgHighlighted(pComposedButtonBgHighlighted);
+
        for (int i = 0; i < idCount; i++)
        {
                const Integer* pButtonId = static_cast<const Integer*>(buttonIds.GetAt(i));
@@ -196,11 +248,20 @@ _WebPopup::CreateAndAddButtons(const IList& buttonIds, const IList& buttonTitles
                std::unique_ptr<Button> pButton(new (std::nothrow) Button());
                SysTryReturnResult(NID_WEB_CTRL, pButton.get(), E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] Memory Allocation failed.");
 
-               r = pButton->Construct(Rectangle((buttonMargin*(i+1))+(buttonWidth*i), 0, buttonWidth, __pWebPopupData->btnDim.height), *pButtonTitle);
+               r = pButton->Construct(Rectangle((buttonMargin*(i+1))+(buttonWidth*i), buttonTopMargin, buttonWidth, __pWebPopupData->btnDim.height), *pButtonTitle);
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
 
                pButton->SetActionId(pButtonId->ToInt());
 
+               pButton->SetNormalBackgroundBitmap(*pComposedBtnBgNormal);
+               pButton->SetPressedBackgroundBitmap(*pComposedBtnBgPressed);
+               pButton->SetDisabledBackgroundBitmap(*pComposedBtnBgDisabled);
+               pButton->SetHighlightedBackgroundBitmap(*pComposedBtnBgHighlighted);
+               pButton->SetTextColor(buttonTextNormal);
+               pButton->SetPressedTextColor(buttonTextPressed);
+               pButton->SetDisabledTextColor(buttonTextDisabled);
+               pButton->SetHighlightedTextColor(buttonTextHighlighted);
+
                //Add button to panel
                r = pPanel->AddControl(*pButton);
                SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
@@ -243,6 +304,7 @@ _WebPopup::GetPopupData(bool refresh)
 
        GET_SHAPE_CONFIG(MESSAGEBOX::BUTTON_HEIGHT, orientation, __pWebPopupData->btnDim.height);
        GET_SHAPE_CONFIG(MESSAGEBOX::BUTTON_SIDE_MARGIN_02, orientation, __pWebPopupData->spacePad);
+       GET_SHAPE_CONFIG(MESSAGEBOX::BOTTOM_HEIGHT, orientation, __pWebPopupData->panelHeight);
 
        GET_SHAPE_CONFIG(LABEL::TEXT_FONT_SIZE, orientation, __pWebPopupData->labelFontSize);
        GET_DIMENSION_CONFIG(CHECKBUTTON::MIN_DIMENSION, orientation, __pWebPopupData->checkDim);
index bd25d56..342feeb 100755 (executable)
@@ -39,9 +39,9 @@ namespace Tizen { namespace Web { namespace Controls
 
 
 static const wchar_t* DEFAULT_ENCODING_MODE = L"UTF-8";
-static const int DEFAULT_FONT_SIZE = 17;
+static const int DEFAULT_FONT_SIZE = 16;
 static const float DEFAULT_ZOOM_LEVEL = 2.0f;
-static const wchar_t* DEFAULT_USER_AGENT = L"Mozilla/5.0 (Linux; Tizen 2.1; sdk) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.1 Mobile Safari/537.3";
+static const wchar_t* DEFAULT_USER_AGENT = L"Mozilla/5.0 (Linux; Tizen 2.2; sdk) AppleWebKit/537.3 (KHTML, like Gecko) Version/2.2 Mobile Safari/537.3";
 
 
 _WebSettingImpl::_WebSettingImpl(void)
index 4c1260a..abe701a 100755 (executable)
@@ -97,6 +97,7 @@ private:
 private:
        _CertificatePopupMode __certPopupMode;
        bool __confirm;
+       bool __reaction;
 
        Ewk_Certificate_Policy_Decision* __pCertificatePolicyData;
        _CertificateConfirmPopup* __pParent;
index 0cbdfbe..bb13523 100755 (executable)
@@ -41,7 +41,7 @@ enum _UserConfirmPopupButtonId
 {
        ID_BUTTON_USER_ALLOW,
        ID_BUTTON_USER_CANCEL,
-       ID_BUTTON_USER_CERT_VIEW
+       ID_BUTTON_USER_NEVER
 };
 
 enum _UserConfirmMode
@@ -53,6 +53,7 @@ enum _UserConfirmMode
        USER_CONFIRM_NOTIFICATION,
        USER_SCRIPT_ALERT,
        USER_SCRIPT_CONFIRM,
+       USER_BEFORE_UNLOAD_CONFIRM,
        USER_CONFIRM_APP_CACHE,
        USER_CONFIRM_DB_QUOTA_EXCEDED,
        USER_CONFIRM_LOCAL_FS_QUOTA_EXCEDED,
@@ -101,6 +102,7 @@ private:
        void* __pUserPolicyData;
        _UserConfirmMode __userConfirmMode;
        Tizen::Ui::Controls::CheckButton* __pCheckButton;
+       bool __isUserActionNeeded;
 
        bool __sync;
        Tizen::Web::Controls::_WebImpl* __pImpl;
index 267719f..d96237c 100755 (executable)
@@ -28,7 +28,7 @@
 #include <EWebKit2.h>
 #include <FBaseColArrayList.h>
 #include <FBaseString.h>
-#include <FCntIDownloadListener.h>
+#include <FSysISettingEventListener.h>
 #include <FUiIActionEventListener.h>
 #include <FUiIOrientationEventListener.h>
 #include <FUiITextEventListener.h>
@@ -61,7 +61,7 @@ class HttpHeader;
 
 namespace Tizen { namespace System
 {
-class _VibratorImpl;
+class Vibrator;
 }} // Tizen::Sytem
 
 namespace Tizen { namespace Ui
@@ -137,14 +137,16 @@ enum _WebPopupCloseId
        ID_USER_CONFIRM_GEOLOCATION_CLOSE,
        ID_USER_CONFIRM_NOTIFICATION_CLOSE,
        ID_USER_SCRIPT_ALERT_CLOSE,
-       ID_USER_SCRIPT_CONFIRM_CLOSE
+       ID_USER_SCRIPT_CONFIRM_CLOSE,
+       ID_USER_BEFORE_UNLOAD_CONFIRM_CLOSE,
+       ID_USER_SCRIPT_SELECTBOX_CLOSE
 };
 
 class _OSP_EXPORT_ _WebImpl
        : public Tizen::Ui::_ContainerImpl
        , public Tizen::Ui::ITextEventListener
        , public Tizen::Web::Controls::_IWebEventListener
-       , public Tizen::Content::IDownloadListener
+       , public Tizen::System::ISettingEventListener
 {
 public:
        _WebImpl(Web* pWeb, Tizen::Ui::_Control* pCore);
@@ -296,10 +298,6 @@ public:
 
        Tizen::Graphics::Dimension GetPageSize(void) const;
 
-       result AddHttpHeaderField(const Tizen::Base::String& name, const Tizen::Base::String& value);
-
-       result RemoveHttpHeaderField(const Tizen::Base::String& name);
-
        virtual bool IsLayoutable(void) const;
 
        void SetEventListenerCallback(void) const;
@@ -328,7 +326,6 @@ public:
        bool IsCertificateRequested(void) const;
        void SetCertificateConfirmed(bool arg);
        bool IsCertificateConfirmed(void) const;
-       void ClearCertificateDb(void);
 
        void SetOrientationChanged(bool arg);
        bool IsOrientationChanged(void) const;
@@ -348,6 +345,10 @@ public:
 
        void SetKeypadOpened(bool isKeypadOpened);
 
+       bool IsWinFocusLost(void) const;
+
+       void SetWinFocusLost(bool isWinFocusLost);
+
        Tizen::Graphics::Rectangle GetPreviousKeypadBounds(void) const;
 
        void SetPreviousKeypadBounds(Tizen::Graphics::Rectangle& bounds);
@@ -445,16 +446,14 @@ private:
        result OnHandleWebUiEventF(const Tizen::Base::Runtime::IEventArg& arg);
        result OnHandleTextSearchEvent(const Tizen::Base::Runtime::IEventArg& arg);
 
-       virtual void OnDownloadCanceled(RequestId reqId) {}
-       virtual void OnDownloadCompleted(RequestId reqId, const Tizen::Base::String &path);
-       virtual void OnDownloadFailed(RequestId reqId, result r, const Tizen::Base::String &errorCode) {}
-       virtual void OnDownloadInProgress(RequestId reqId, unsigned long long receivedSize, unsigned long long totalSize) {}
-       virtual void OnDownloadPaused(RequestId reqId) {}
+       virtual void OnSettingChanged(Tizen::Base::String& key);
 
+       static Eina_Bool OnBeforeUnloadConfirmRequested(Evas_Object* pView, const char* pMessage, void* pUserData);
 private:
        bool __isFooterVisible;
        bool __isKeypadVisible;
        bool __isKeypadOpened;
+       bool __isWinFocusLost;
        bool __isLoadingErrorOccurred;
        bool __isRedirectRequested;
        bool __isCertificateRequested;
@@ -490,6 +489,7 @@ private:
        std::unique_ptr<_UserConfirmPopup> __pNotificationConfirmPopup;
        std::unique_ptr<_UserConfirmPopup> __pScriptAlertConfirmPopup;
        std::unique_ptr<_UserConfirmPopup> __pScriptConfirmPopup;
+       std::unique_ptr<_UserConfirmPopup> __pBeforeUnloadConfirmPopup;
        std::unique_ptr<_UserConfirmPopup> __pAppCacheConfirmPopup;
        std::unique_ptr<_UserConfirmPopup> __pDbQuotaConfirmPopup;
        std::unique_ptr<_UserConfirmPopup> __pLocalFsQuotaConfirmPopup;
@@ -503,7 +503,7 @@ private:
        std::unique_ptr<_InputPickerPopup> __pColorPicker;
        std::unique_ptr<_FormDataWindow> __pFormDataWindow;
 
-       std::unique_ptr<Tizen::System::_VibratorImpl> __pVibrator;
+       std::unique_ptr<Tizen::System::Vibrator> __pVibrator;
 
        Tizen::Base::Runtime::Mutex __mutex;
 
index 52f3deb..74c69f1 100755 (executable)
@@ -73,6 +73,7 @@ struct _WebPopupData
        int sideMargin;
        int titleHeight;
        int bottomMargin;
+       int panelHeight;
 };
 
 class _WebPopup