Apply implementation guide about deleting popup
authorHyun Lee <hyunn.lee@samsung.com>
Wed, 12 Jun 2013 10:20:30 +0000 (19:20 +0900)
committerHyun Lee <hyunn.lee@samsung.com>
Wed, 12 Jun 2013 10:20:30 +0000 (19:20 +0900)
Change-Id: I5f6d12d1025299ae868ffc3726e2bc6770b9c6ef
Signed-off-by: Hyun Lee <hyunn.lee@samsung.com>
src/controls/FWebCtrl_CertificateConfirmPopup.cpp
src/controls/FWebCtrl_PromptPopup.cpp
src/controls/FWebCtrl_PromptPopup.h [changed mode: 0644->0755]
src/controls/FWebCtrl_UserConfirmPopup.cpp
src/controls/FWebCtrl_Web.cpp
src/controls/FWebCtrl_Web.h
src/controls/FWebCtrl_WebImpl.cpp
src/controls/FWebCtrl_WebImpl.h

index 5a0dcd8..85118f4 100755 (executable)
@@ -40,6 +40,7 @@
 #include "FWebCtrl_CertificateConfirmPopup.h"
 #include "FWebCtrl_EflWebkit.h"
 #include "FWebCtrl_Utility.h"
+#include "FWebCtrl_WebImpl.h"
 
 
 using namespace Tizen::Base;
@@ -242,7 +243,7 @@ _CertificateConfirmPopup::OnActionPerformed(const Control& source, int actionId)
        }
        if (__certPopupMode == CERTIFICATE_POPUP_MODE_VIEW )
        {
-               delete this;
+               GetOwner()->SendUserEvent(ID_CERTIFICATE_CONFIRM_POPUP_CLOSE, null);
        }
 }
 
index 075cbd6..7fe1909 100755 (executable)
@@ -39,6 +39,7 @@
 #include <FUi_ResourceManager.h>
 #include <FUiCtrl_TextBoxImpl.h>
 #include "FWebCtrl_PromptPopup.h"
+#include "FWebCtrl_WebImpl.h"
 
 
 using namespace Tizen::Base;
@@ -191,7 +192,7 @@ _PromptPopup::OnActionPerformed(const Control& source, int actionId)
                SysAssertf(false, "unknown action ID used");
                break;
        }
-       delete this;
+       GetOwner()->SendUserEvent(ID_PROMPT_POPUP_CLOSE, null);
 }
 
 
old mode 100644 (file)
new mode 100755 (executable)
index e2b3494..0496595
@@ -29,7 +29,7 @@
 
 namespace Tizen { namespace Ui { namespace Controls
 {
-class Popup;
+class EditField;
 }}} // Tizen::Ui::Controls
 
 namespace Tizen { namespace Web { namespace Controls
index 4ce41dc..2ee0b45 100755 (executable)
@@ -40,6 +40,7 @@
 #include "FWebCtrl_EflWebkit.h"
 #include "FWebCtrl_UserConfirmPopup.h"
 #include "FWebCtrl_Utility.h"
+#include "FWebCtrl_WebImpl.h"
 
 
 using namespace Tizen::Base;
@@ -225,7 +226,7 @@ _UserConfirmPopup::OnActionPerformed(const Control& source, int actionId)
 
        if (!__sync)
        {
-               delete this;
+               GetOwner()->SendUserEvent(ID_USER_CONFIRM_POPUP_CLOSE, null);
        }
 }
 
index c6fc9f6..c126153 100755 (executable)
@@ -924,7 +924,7 @@ _Web::OnPinchGestureCanceled(Tizen::Ui::_TouchPinchGestureDetector& gesture)
 
 
 Canvas*
-_Web::OnCanvasRequestedFN(const FloatRectangle& bounds)
+_Web::OnCanvasRequestedN(const FloatRectangle& bounds)
 {
        result r = E_SUCCESS;
 
index 867de7d..4306cc5 100755 (executable)
@@ -140,7 +140,7 @@ public:
        virtual bool OnTapGestureDetected(Tizen::Ui::_TouchTapGestureDetector& gesture);
        virtual bool OnTapGestureCanceled(Tizen::Ui::_TouchTapGestureDetector& gesture);
 
-       virtual Tizen::Graphics::Canvas* OnCanvasRequestedFN(const Tizen::Graphics::FloatRectangle& size);
+       virtual Tizen::Graphics::Canvas* OnCanvasRequestedN(const Tizen::Graphics::FloatRectangle& size);
        virtual Tizen::Graphics::Bitmap* OnCapturedBitmapRequestedN(void);
 
 private:
index 3b8c943..4d61922 100755 (executable)
@@ -393,22 +393,13 @@ OnScriptPromptRequested(Evas_Object* pView, const char* pMessage, const char* pD
 
        result r = E_SUCCESS;
        _WebImpl* pImpl = reinterpret_cast< _WebImpl* >(pUserData);
+
        String msg(pMessage);
        String defVal(pDefaultValue);
 
-       std::unique_ptr< _PromptPopup > pPromptPopup(new (std::nothrow) _PromptPopup());
-       SysTryCatch(NID_WEB_CTRL, pPromptPopup.get(), , E_OUT_OF_MEMORY, "Memory allocation failed.");
-
-       r = pPromptPopup->Construct(msg, defVal, pView);
-       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
-
-       pPromptPopup->SetOwner(&pImpl->GetPublic());
-
-       r = pPromptPopup->ShowPopup();
+       r = pImpl->ShowPromptPopup(msg, defVal);
        SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
 
-       pPromptPopup.release();
-
        return EINA_TRUE;
 
 CATCH:
@@ -2248,6 +2239,7 @@ _WebImpl::_WebImpl(Web* pWeb, Tizen::Ui::_Control* pCore)
        , __pAuthChallenge(null)
        , __pAuthPopup(null)
        , __pUserConfirmPopup(null)
+       , __pPromptPopup(null)
        , __pCertConfirmPopup(null)
        , __pSelectBox(null)
        , __pDatePicker(null)
@@ -4652,6 +4644,35 @@ CATCH:
        return r;
 }
 
+
+result
+_WebImpl::ShowPromptPopup(String msg, String defVal)
+{
+       result r = E_SUCCESS;
+
+       std::unique_ptr< _PromptPopup > pPromptPopup(new (std::nothrow) _PromptPopup());
+       SysTryReturnResult(NID_WEB_CTRL, pPromptPopup.get(), E_OUT_OF_MEMORY, "Memory Allocation failed.");
+
+       r = pPromptPopup->Construct(msg, defVal, __pWebCore->GetWebNativeNode());
+       SysTryReturn(NID_WEB_CTRL, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r));
+
+       __pPromptPopup = std::move(pPromptPopup);
+
+       __pPromptPopup->SetOwner(&GetPublic());
+
+       r = __pPromptPopup->ShowPopup();
+       SysTryCatch(NID_WEB_CTRL, r == E_SUCCESS, , r, "[%s] Propagating.", GetErrorMessage(r));
+
+       return E_SUCCESS;
+
+CATCH:
+       __pPromptPopup.reset();
+
+       return r;
+
+}
+
+
 result
 _WebImpl::ShowUserConfirmPopup(_UserConfirmMode userConfirmMode, void* pPolicy, String msg)
 {
@@ -4678,6 +4699,7 @@ CATCH:
        return r;
 }
 
+
 result
 _WebImpl::ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPolicy, String msg)
 {
@@ -4812,6 +4834,26 @@ _WebImpl::OnAncestorVisibleStateChanged(const _Control& control)
 }
 
 
+void
+_WebImpl::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
+{
+       switch (requestId)
+       {
+       case ID_CERTIFICATE_CONFIRM_POPUP_CLOSE:
+               __pCertConfirmPopup.reset();
+               break;
+       case ID_PROMPT_POPUP_CLOSE:
+               __pPromptPopup.reset();
+               break;
+       case ID_USER_CONFIRM_POPUP_CLOSE:
+               __pUserConfirmPopup.reset();
+               break;
+       default:
+               break;
+       }
+}
+
+
 _WebDataHandler*
 _WebImpl::GetDownloadHandler(void) const
 {
index 14a1d53..fc7a729 100755 (executable)
@@ -33,9 +33,9 @@
 #include <FUiITextEventListener.h>
 #include <FWebCtrlILoadingListener.h>
 #include <FUi_ContainerImpl.h>
+#include "FWebCtrl_CertificateConfirmPopup.h"
 #include "FWebCtrl_IWebEventListener.h"
 #include "FWebCtrl_UserConfirmPopup.h"
-#include "FWebCtrl_CertificateConfirmPopup.h"
 
 namespace Tizen { namespace Base {  namespace Collection
 {
@@ -58,7 +58,7 @@ namespace Tizen { namespace Net { namespace Http {
 class HttpHeader;
 }}} // Tizen::Net::Http
 
-namespace Tizen { namespace Sytem
+namespace Tizen { namespace System
 {
 class _VibratorImpl;
 }} // Tizen::Sytem
@@ -102,8 +102,8 @@ class _WebPresenter;
 class _JsBridgeComparer;
 class _JsBridgeHashCodeProvider;
 class _AuthConfirmPopup;
-class _GeolocationConfirmPopup;
 class _PromptPopup;
+class _GeolocationConfirmPopup;
 class _WebDataHandler;
 class _SelectBox;
 class _InputPickerPopup;
@@ -127,6 +127,13 @@ enum _SearchType {
        SEARCH_NEXT_ASYNC
 };
 
+enum _WebPopupCloseId
+{
+       ID_CERTIFICATE_CONFIRM_POPUP_CLOSE,
+       ID_PROMPT_POPUP_CLOSE,
+       ID_USER_CONFIRM_POPUP_CLOSE
+};
+
 class _WebImpl
        : public Tizen::Ui::_ContainerImpl
        , public Tizen::Ui::ITextEventListener
@@ -343,6 +350,8 @@ public:
 
        result ShowCertificateConfirmPopup(_CertificatePopupMode userConfirmMode, Ewk_Certificate_Policy_Decision *pPolicy);
 
+       result ShowPromptPopup(Tizen::Base::String msg = L"", Tizen::Base::String defVal = L"");
+
        result ShowUserConfirmPopup(_UserConfirmMode userConfirmMode, void* pPolicy, Tizen::Base::String msg = L"");
        result ShowUserConfirmPopupAsync(_UserConfirmMode userConfirmMode, void* pPolicy, Tizen::Base::String msg = L"");
 
@@ -378,6 +387,8 @@ public:
 
        virtual void OnAncestorVisibleStateChanged(const Tizen::Ui::_Control& control);
 
+       virtual void OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs);
+
        static _WebImpl* CreateWebImplN(Web* pControl, const Tizen::Graphics::Rectangle& bounds);
 
        static _WebImpl* CreateWebImplN(Web* pControl, const Tizen::Graphics::FloatRectangle& bounds);
@@ -455,7 +466,7 @@ private:
        std::unique_ptr<_AuthConfirmPopup> __pAuthPopup;
 
        std::unique_ptr<_UserConfirmPopup> __pUserConfirmPopup;
-
+       std::unique_ptr< _PromptPopup > __pPromptPopup;
        std::unique_ptr<_CertificateConfirmPopup>  __pCertConfirmPopup;
 
        std::unique_ptr<_SelectBox> __pSelectBox;