Merge "Replace Signal with std::function." into devel/master
authorJIYUN YANG <ji.yang@samsung.com>
Thu, 15 Jul 2021 09:45:26 +0000 (09:45 +0000)
committerGerrit Code Review <gerrit@review>
Thu, 15 Jul 2021 09:45:26 +0000 (09:45 +0000)
1  2 
automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp
dali-toolkit/devel-api/controls/web-view/web-view.h
dali-toolkit/internal/controls/web-view/web-view-impl.cpp

@@@ -61,7 -61,7 +61,7 @@@ static int gPageLoadStartedCallbackCall
  static int gPageLoadInProgressCallbackCalled = 0;
  static int gPageLoadFinishedCallbackCalled = 0;
  static int gPageLoadErrorCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineLoadError> gPageLoadErrorInstance = nullptr;
+ static std::unique_ptr<Dali::WebEngineLoadError> gPageLoadErrorInstance = nullptr;
  static int gScrollEdgeReachedCallbackCalled = 0;
  static int gUrlChangedCallbackCalled = 0;
  static int gEvaluateJavaScriptCallbackCalled = 0;
@@@ -74,21 -74,21 +74,21 @@@ static int gGeolocationPermissionCallba
  static bool gTouched = false;
  static bool gHovered = false;
  static bool gWheelEventHandled = false;
- static int gFormRepostDecisionCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineFormRepostDecision> gFormRepostDecisionInstance = nullptr;
+ static int gFormRepostDecidedCallbackCalled = 0;
+ static std::unique_ptr<Dali::WebEngineFormRepostDecision> gFormRepostDecidedInstance = nullptr;
  static int gFrameRenderedCallbackCalled = 0;
  static int gRequestInterceptorCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineRequestInterceptor> gRequestInterceptorInstance = nullptr;
+ static std::unique_ptr<Dali::WebEngineRequestInterceptor> gRequestInterceptorInstance = nullptr;
  static int gConsoleMessageCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineConsoleMessage> gConsoleMessageInstance = nullptr;
+ static std::unique_ptr<Dali::WebEngineConsoleMessage> gConsoleMessageInstance = nullptr;
  static int gResponsePolicyDecidedCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEnginePolicyDecision> gResponsePolicyDecisionInstance = nullptr;
+ static std::unique_ptr<Dali::WebEnginePolicyDecision> gResponsePolicyDecisionInstance = nullptr;
  static int gCertificateConfirmCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineCertificate> gCertificateConfirmInstance = nullptr;
+ static std::unique_ptr<Dali::WebEngineCertificate> gCertificateConfirmInstance = nullptr;
  static int gSslCertificateChangedCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineCertificate> gSslCertificateInstance = nullptr;
+ static std::unique_ptr<Dali::WebEngineCertificate> gSslCertificateInstance = nullptr;
  static int gHttpAuthHandlerCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineHttpAuthHandler> gHttpAuthInstance = nullptr;
+ static std::unique_ptr<Dali::WebEngineHttpAuthHandler> gHttpAuthInstance = nullptr;
  static int gSecurityOriginsAcquiredCallbackCalled = 0;
  static int gStorageUsageAcquiredCallbackCalled = 0;
  static int gFormPasswordsAcquiredCallbackCalled = 0;
@@@ -97,9 -97,9 +97,9 @@@ static int gMimeOverriddenCallbackCalle
  static std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> gSecurityOriginList;
  static std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> gPasswordDataList;
  static int gContextMenuShownCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineContextMenu> gContextMenuShownInstance = nullptr;
+ static std::unique_ptr<Dali::WebEngineContextMenu> gContextMenuShownInstance = nullptr;
  static int gContextMenuHiddenCallbackCalled = 0;
- static std::shared_ptr<Dali::WebEngineContextMenu> gContextMenuHiddenInstance = nullptr;
+ static std::unique_ptr<Dali::WebEngineContextMenu> gContextMenuHiddenInstance = nullptr;
  static int gHitTestCreatedCallbackCalled = 0;
  static int gCookieManagerChangsWatchCallbackCalled = 0;
  
@@@ -117,33 -117,33 +117,33 @@@ struct CallbackFuncto
    bool* mCallbackFlag;
  };
  
- static void OnPageLoadStarted( WebView view, const std::string& url )
+ static void OnPageLoadStarted(const std::string& url)
  {
    gPageLoadStartedCallbackCalled++;
  }
  
- static void OnPageLoadInProgress( WebView view, const std::string& url )
+ static void OnPageLoadInProgress(const std::string& url)
  {
    gPageLoadInProgressCallbackCalled++;
  }
  
- static void OnPageLoadFinished( WebView view, const std::string& url )
+ static void OnPageLoadFinished(const std::string& url)
  {
    gPageLoadFinishedCallbackCalled++;
  }
  
- static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge edge )
+ static void OnScrollEdgeReached(Dali::WebEnginePlugin::ScrollEdge edge)
  {
    gScrollEdgeReachedCallbackCalled++;
  }
  
- static void OnResponsePolicyDecided(WebView view, std::shared_ptr<Dali::WebEnginePolicyDecision> decision)
+ static void OnResponsePolicyDecided(std::unique_ptr<Dali::WebEnginePolicyDecision> decision)
  {
    gResponsePolicyDecidedCallbackCalled++;
    gResponsePolicyDecisionInstance = std::move(decision);
  }
  
- static void OnUrlChanged( WebView view, const std::string& url )
+ static void OnUrlChanged(const std::string& url)
  {
    gUrlChangedCallbackCalled++;
  }
@@@ -154,30 -154,30 +154,30 @@@ static bool OnHitTestCreated(std::uniqu
    return true;
  }
  
- static void OnPageLoadError(WebView view, std::shared_ptr<Dali::WebEngineLoadError> error)
+ static void OnPageLoadError(std::unique_ptr<Dali::WebEngineLoadError> error)
  {
    gPageLoadErrorCallbackCalled++;
    gPageLoadErrorInstance = std::move(error);
  }
  
- static void OnEvaluateJavaScript( const std::string& result )
+ static void OnEvaluateJavaScript(const std::string& result)
  {
    gEvaluateJavaScriptCallbackCalled++;
  }
  
- static bool OnJavaScriptAlert( const std::string& result )
+ static bool OnJavaScriptAlert(const std::string& result)
  {
    gJavaScriptAlertCallbackCalled++;
    return true;
  }
  
- static bool OnJavaScriptConfirm( const std::string& result )
+ static bool OnJavaScriptConfirm(const std::string& result)
  {
    gJavaScriptConfirmCallbackCalled++;
    return true;
  }
  
- static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& message2 )
+ static bool OnJavaScriptPrompt(const std::string& meesage1, const std::string& message2)
  {
    gJavaScriptPromptCallbackCalled++;
    return true;
@@@ -210,54 -210,54 +210,54 @@@ static void OnChangesWatch(
    gCookieManagerChangsWatchCallbackCalled++;
  }
  
- static bool OnHovered( Actor actor, const Dali::HoverEvent& hover )
+ static bool OnHovered(Actor actor, const Dali::HoverEvent& hover)
  {
    gHovered = true;
    return true;
  }
  
- static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel )
+ static bool OnWheelEvent(Actor actor, const Dali::WheelEvent& wheel)
  {
    gWheelEventHandled = true;
    return true;
  }
  
- static void OnFormRepostDecision(WebView, std::shared_ptr<Dali::WebEngineFormRepostDecision> decision)
+ static void OnFormRepostDecided(std::unique_ptr<Dali::WebEngineFormRepostDecision> decision)
  {
-   gFormRepostDecisionCallbackCalled++;
-   gFormRepostDecisionInstance = std::move(decision);
+   gFormRepostDecidedCallbackCalled++;
+   gFormRepostDecidedInstance = std::move(decision);
  }
  
- static void OnFrameRendered(WebView)
+ static void OnFrameRendered()
  {
    gFrameRenderedCallbackCalled++;
  }
  
- static void OnRequestInterceptor(WebView view, std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor)
+ static void OnRequestInterceptor(std::unique_ptr<Dali::WebEngineRequestInterceptor> interceptor)
  {
    gRequestInterceptorCallbackCalled++;
    gRequestInterceptorInstance = std::move(interceptor);
  }
  
- static void OnConsoleMessage(WebView view, std::shared_ptr<Dali::WebEngineConsoleMessage> message)
+ static void OnConsoleMessage(std::unique_ptr<Dali::WebEngineConsoleMessage> message)
  {
    gConsoleMessageCallbackCalled++;
    gConsoleMessageInstance = std::move(message);
  }
  
- static void OnCertificateConfirm(WebView view, std::shared_ptr<Dali::WebEngineCertificate> certificate )
+ static void OnCertificateConfirm(std::unique_ptr<Dali::WebEngineCertificate> certificate)
  {
    gCertificateConfirmCallbackCalled++;
    gCertificateConfirmInstance = std::move(certificate);
  }
  
- static void OnSslCertificateChanged(WebView view, std::shared_ptr<Dali::WebEngineCertificate> certificate )
+ static void OnSslCertificateChanged(std::unique_ptr<Dali::WebEngineCertificate> certificate)
  {
    gSslCertificateChangedCallbackCalled++;
    gSslCertificateInstance = std::move(certificate);
  }
  
- static void OnHttpAuthHandler( WebView view, std::shared_ptr<Dali::WebEngineHttpAuthHandler> hander )
+ static void OnHttpAuthHandler(std::unique_ptr<Dali::WebEngineHttpAuthHandler> hander)
  {
    gHttpAuthHandlerCallbackCalled++;
    gHttpAuthInstance = std::move(hander);
@@@ -293,13 -293,13 +293,13 @@@ static bool OnMimeOverridden(const std:
    return false;
  }
  
- static void OnContextMenuShown(WebView view, std::shared_ptr<Dali::WebEngineContextMenu> menu)
+ static void OnContextMenuShown(std::unique_ptr<Dali::WebEngineContextMenu> menu)
  {
    gContextMenuShownCallbackCalled++;
    gContextMenuShownInstance = std::move(menu);
  }
  
- static void OnContextMenuHidden(WebView view, std::shared_ptr<Dali::WebEngineContextMenu> menu)
+ static void OnContextMenuHidden(std::unique_ptr<Dali::WebEngineContextMenu> menu)
  {
    gContextMenuHiddenCallbackCalled++;
    gContextMenuHiddenInstance = std::move(menu);
@@@ -375,21 -375,10 +375,10 @@@ int UtcDaliWebViewPageNavigation(void
    application.Render();
    DALI_TEST_CHECK( view );
  
-   ConnectionTracker* testTracker = new ConnectionTracker();
-   view.PageLoadStartedSignal().Connect( &OnPageLoadStarted );
-   view.PageLoadInProgressSignal().Connect( &OnPageLoadInProgress );
-   view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished );
-   view.UrlChangedSignal().Connect( &OnUrlChanged );
-   bool signal1 = false;
-   bool signal2 = false;
-   bool signal3 = false;
-   bool signal4 = false;
-   bool signal5 = false;
-   view.ConnectSignal( testTracker, "pageLoadStarted", CallbackFunctor(&signal1) );
-   view.ConnectSignal( testTracker, "pageLoadInProgress", CallbackFunctor(&signal2) );
-   view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal3) );
-   view.ConnectSignal( testTracker, "urlChanged", CallbackFunctor(&signal4) );
-   view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal5) );
+   view.RegisterPageLoadStartedCallback( &OnPageLoadStarted );
+   view.RegisterPageLoadInProgressCallback( &OnPageLoadInProgress );
+   view.RegisterPageLoadFinishedCallback( &OnPageLoadFinished );
+   view.RegisterUrlChangedCallback( &OnUrlChanged );
    DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 1, TEST_LOCATION );
    DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 1, TEST_LOCATION );
    DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 1, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 & signal2 & signal3 & signal4 );
-   DALI_TEST_CHECK( !signal5 );
  
    view.LoadUrl( TEST_URL2 );
    view.Suspend();
@@@ -454,13 -441,8 +441,8 @@@ int UtcDaliWebViewPageLoadErrorConsoleM
    application.Render();
    DALI_TEST_CHECK( view );
  
-   ConnectionTracker* testTracker = new ConnectionTracker();
-   view.PageLoadErrorSignal().Connect( &OnPageLoadError );
-   view.ConsoleMessageSignal().Connect( &OnConsoleMessage );
-   bool signal1 = false;
-   bool signal2 = false;
-   view.ConnectSignal( testTracker, "pageLoadError", CallbackFunctor(&signal1) );
-   view.ConnectSignal( testTracker, "consoleMessage", CallbackFunctor(&signal2) );
+   view.RegisterPageLoadErrorCallback( &OnPageLoadError );
+   view.RegisterConsoleMessageReceivedCallback( &OnConsoleMessage );
    DALI_TEST_EQUALS( gPageLoadErrorCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gConsoleMessageCallbackCalled, 0, TEST_LOCATION );
  
    Test::EmitGlobalTimerSignal();
    DALI_TEST_EQUALS( gPageLoadErrorCallbackCalled, 1, TEST_LOCATION );
    DALI_TEST_EQUALS( gConsoleMessageCallbackCalled, 1, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 & signal2);
  
    // error code.
    DALI_TEST_CHECK(gPageLoadErrorInstance);
@@@ -670,8 -651,8 +651,8 @@@ int UtcDaliWebViewPropertyVideoHoleEnab
    WebView view = WebView::New();
    DALI_TEST_CHECK( view );
  
 -  const bool kDefaultValue = true;
 -  const bool kTestValue = false;
 +  const bool kDefaultValue = false;
 +  const bool kTestValue = true;
  
    // Check default value
    bool output;
@@@ -794,7 -775,7 +775,7 @@@ int UtcDaliWebViewHoverAndWheel(void
    END_TEST;
  }
  
- int UtcDaliWebViewFormRepostDecisionFrameRendering(void)
+ int UtcDaliWebViewFormRepostDecidedFrameRendering(void)
  {
    ToolkitTestApplication application;
  
    application.Render();
    DALI_TEST_CHECK( view );
  
-   ConnectionTracker* testTracker = new ConnectionTracker();
-   view.FormRepostDecisionSignal().Connect(&OnFormRepostDecision);
-   view.FrameRenderedSignal().Connect(&OnFrameRendered);
-   bool signal1 = false;
-   bool signal2 = false;
-   view.ConnectSignal( testTracker, "formRepostDecision", CallbackFunctor(&signal1) );
-   view.ConnectSignal( testTracker, "frameRendered", CallbackFunctor(&signal2) );
-   DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 0, TEST_LOCATION );
+   view.RegisterFormRepostDecidedCallback(&OnFormRepostDecided);
+   view.RegisterFrameRenderedCallback(&OnFrameRendered);
+   DALI_TEST_EQUALS( gFormRepostDecidedCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 0, TEST_LOCATION );
  
    view.LoadUrl( TEST_URL1 );
    Test::EmitGlobalTimerSignal();
-   DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 1, TEST_LOCATION );
+   DALI_TEST_EQUALS( gFormRepostDecidedCallbackCalled, 1, TEST_LOCATION );
    DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 1, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 & signal2);
  
    // form repost decision.
-   DALI_TEST_CHECK(gFormRepostDecisionInstance);
-   gFormRepostDecisionInstance->Reply(true);
+   DALI_TEST_CHECK(gFormRepostDecidedInstance);
+   gFormRepostDecidedInstance->Reply(true);
  
    // reset
-   gFormRepostDecisionInstance = nullptr;
+   gFormRepostDecidedInstance = nullptr;
  
    END_TEST;
  }
@@@ -848,16 -823,9 +823,9 @@@ int UtcDaliWebViewSslCertificateHttpAut
    application.Render();
    DALI_TEST_CHECK( view );
  
-   ConnectionTracker* testTracker = new ConnectionTracker();
-   view.CertificateConfirmSignal().Connect(&OnCertificateConfirm);
-   view.SslCertificateChangedSignal().Connect(&OnSslCertificateChanged);
-   view.HttpAuthHandlerSignal().Connect(&OnHttpAuthHandler);
-   bool signal1 = false;
-   bool signal2 = false;
-   bool signal3 = false;
-   view.ConnectSignal( testTracker, "certificateConfirm", CallbackFunctor(&signal1) );
-   view.ConnectSignal( testTracker, "sslCertificateChanged", CallbackFunctor(&signal2) );
-   view.ConnectSignal( testTracker, "httpAuthRequest", CallbackFunctor(&signal3) );
+   view.RegisterCertificateConfirmedCallback(&OnCertificateConfirm);
+   view.RegisterSslCertificateChangedCallback(&OnSslCertificateChanged);
+   view.RegisterHttpAuthHandlerCallback(&OnHttpAuthHandler);
    DALI_TEST_EQUALS( gCertificateConfirmCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gSslCertificateChangedCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gHttpAuthHandlerCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gCertificateConfirmCallbackCalled, 1, TEST_LOCATION );
    DALI_TEST_EQUALS( gSslCertificateChangedCallbackCalled, 1, TEST_LOCATION );
    DALI_TEST_EQUALS( gHttpAuthHandlerCallbackCalled, 1, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 & signal2 & signal3);
  
    // certificate.
    DALI_TEST_CHECK(gCertificateConfirmInstance);
@@@ -1080,13 -1047,8 +1047,8 @@@ int UtcDaliWebViewContextMenuShownAndHi
    DALI_TEST_CHECK( view );
  
    // load url.
-   ConnectionTracker* testTracker = new ConnectionTracker();
-   view.ContextMenuShownSignal().Connect( &OnContextMenuShown );
-   view.ContextMenuHiddenSignal().Connect( &OnContextMenuHidden );
-   bool signal1 = false;
-   bool signal2 = false;
-   view.ConnectSignal( testTracker, "contextMenuShown", CallbackFunctor(&signal1) );
-   view.ConnectSignal( testTracker, "contextMenuHidden", CallbackFunctor(&signal2) );
+   view.RegisterContextMenuShownCallback( &OnContextMenuShown );
+   view.RegisterContextMenuHiddenCallback( &OnContextMenuHidden );
    DALI_TEST_EQUALS( gContextMenuShownCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_EQUALS( gContextMenuHiddenCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_CHECK(gContextMenuShownInstance == 0);
    Test::EmitGlobalTimerSignal();
    DALI_TEST_EQUALS( gContextMenuShownCallbackCalled, 1, TEST_LOCATION );
    DALI_TEST_EQUALS( gContextMenuHiddenCallbackCalled, 1, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 );
-   DALI_TEST_CHECK( signal2 );
  
    // check context meun & its items.
    DALI_TEST_CHECK(gContextMenuShownInstance != 0);
@@@ -1140,10 -1100,7 +1100,7 @@@ int UtcDaliWebViewScrollBy(void
    DALI_TEST_CHECK( view );
  
    // load url.
-   ConnectionTracker* testTracker = new ConnectionTracker();
-   view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
-   bool signal1 = false;
-   view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
+   view.RegisterScrollEdgeReachedCallback( &OnScrollEdgeReached );
    DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
  
    view.LoadUrl( TEST_URL1 );
    view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
    DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
    DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 );
  
    // scroll by and trigger scrollEdgeReached event.
    bool result = view.ScrollEdgeBy( 50, 50 );
    view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
    DALI_TEST_CHECK( output.x == 200 && output.y == 200 );
    DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 2, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 );
  
    END_TEST;
  }
@@@ -1277,17 -1232,13 +1232,13 @@@ int UtcDaliWebViewHttpRequestIntercepto
    DALI_TEST_CHECK( view );
  
    // load url.
-   ConnectionTracker* testTracker = new ConnectionTracker();
-   view.RequestInterceptorSignal().Connect( &OnRequestInterceptor );
-   bool signal1 = false;
-   view.ConnectSignal( testTracker, "requestInterceptor", CallbackFunctor(&signal1) );
+   view.RegisterRequestInterceptorCallback( &OnRequestInterceptor );
    DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_CHECK(gRequestInterceptorInstance == 0);
  
    view.LoadUrl( TEST_URL1 );
    Test::EmitGlobalTimerSignal();
    DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 1, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 );
  
    // check request interceptor.
    DALI_TEST_CHECK(gRequestInterceptorInstance != 0);
@@@ -1311,17 -1262,13 +1262,13 @@@ int UtcDaliWebViewResponsePolicyDecisio
    DALI_TEST_CHECK( view );
  
    // load url.
-   ConnectionTracker* testTracker = new ConnectionTracker();
-   view.ResponsePolicyDecisionSignal().Connect( &OnResponsePolicyDecided );
-   bool signal1 = false;
-   view.ConnectSignal( testTracker, "responsePolicyDecided", CallbackFunctor(&signal1) );
+   view.RegisterResponsePolicyDecidedCallback( &OnResponsePolicyDecided );
    DALI_TEST_EQUALS( gResponsePolicyDecidedCallbackCalled, 0, TEST_LOCATION );
    DALI_TEST_CHECK(gResponsePolicyDecisionInstance == 0);
  
    view.LoadUrl( TEST_URL1 );
    Test::EmitGlobalTimerSignal();
    DALI_TEST_EQUALS( gResponsePolicyDecidedCallbackCalled, 1, TEST_LOCATION );
-   DALI_TEST_CHECK( signal1 );
  
    // check response policy decision & its frame.
    DALI_TEST_CHECK(gResponsePolicyDecisionInstance != 0);
@@@ -33,9 -33,7 +33,7 @@@ namespace Toolki
  class ImageView;
  class WebBackForwardList;
  class WebContext;
- class WebContextMenu;
  class WebCookieManager;
- class WebFormRepostDecision;
  class WebSettings;
  
  namespace Internal DALI_INTERNAL
@@@ -117,7 -115,7 +115,7 @@@ public
        /**
         * @brief Whether video hole is enabled or not.
         * @details name "videoHoleEnabled", type Property::BOOLEAN.
 -       * @note The value is read-only.
 +       * @note False by default.
         */
        VIDEO_HOLE_ENABLED,
  
     */
    using WebViewScreenshotCapturedCallback = std::function<void(Dali::Toolkit::ImageView)>;
  
-   /**
-    * @brief WebView signal type related with page loading.
-    */
-   using WebViewPageLoadSignalType = Signal<void(WebView, const std::string&)>;
-   /**
-    * @brief WebView signal type related with page loading error.
-    */
-   using WebViewPageLoadErrorSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEngineLoadError>)>;
-   /**
-    * @brief WebView signal type related with scroll edge reached.
-    */
-   using WebViewScrollEdgeReachedSignalType = Signal<void(WebView, Dali::WebEnginePlugin::ScrollEdge)>;
-   /**
-    * @brief WebView signal type related with url changed.
-    */
-   using WebViewUrlChangedSignalType = Signal<void(WebView, const std::string&)>;
-   /**
-    * @brief WebView signal type related with form repost decision.
-    */
-   using WebViewFormRepostDecisionSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEngineFormRepostDecision>)>;
-   /**
-    * @brief WebView signal type related with frame rendered.
-    */
-   using WebViewFrameRenderedSignalType = Signal<void(WebView)>;
-   /**
-    * @brief WebView signal type related with http request interceptor.
-    */
-   using WebViewRequestInterceptorSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEngineRequestInterceptor>)>;
-   /**
-    * @brief WebView signal type related with console message.
-    */
-   using WebViewConsoleMessageSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEngineConsoleMessage>)>;
-   /**
-    * @brief WebView signal type related with response policy decision.
-    */
-   using WebViewResponsePolicyDecisionSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEnginePolicyDecision>)>;
-   /**
-    * @brief WebView signal type related with certificate changed.
-    */
-   using WebViewCertificateSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEngineCertificate>)>;
-   /**
-    * @brief WebView signal type related with http authentication.
-    */
-   using WebViewHttpAuthHandlerSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEngineHttpAuthHandler>)>;
-   /**
-    * @brief WebView signal type related with context menu shown.
-    */
-   using WebViewContextMenuShownSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEngineContextMenu>)>;
-   /**
-    * @brief WebView signal type related with context menu hidden.
-    */
-   using WebViewContextMenuHiddenSignalType = Signal<void(WebView, std::shared_ptr<Dali::WebEngineContextMenu>)>;
  public:
    /**
     * @brief Create an initialized WebView.
     * @brief Evaluate JavaScript code represented as a string.
     *
     * @param[in] script The JavaScript code
-    * @param[in] resultHandler The callback function to be called by the JavaScript runtime. This carries evaluation result
+    * @param[in] resultHandler The callback to be called by the JavaScript runtime. This carries evaluation result
     */
-   void EvaluateJavaScript(const std::string& script, std::function<void(const std::string&)> resultHandler);
+   void EvaluateJavaScript(const std::string& script, Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback resultHandler);
  
    /**
     * @brief Evaluate JavaScript code represented as a string.
     * @param[in] exposedObjectName The name of exposed object
     * @param[in] handler The callback function
     */
-   void AddJavaScriptMessageHandler(const std::string& exposedObjectName, std::function<void(const std::string&)> handler);
+   void AddJavaScriptMessageHandler(const std::string& exposedObjectName, Dali::WebEnginePlugin::JavaScriptMessageHandlerCallback handler);
  
    /**
     * @brief Register alert callback for javascript.
    /**
     * @brief Set or unset TTS focus of the webview.
     * @param[in] focused True if it is gained, false lost.
 -   * @return true if succeeded, false otherwise.
     * @note It only works when the webview does not have keyinput focus. If it has keyinput focus, the TTS focus is set automatically.
     */
    void SetTtsFocus(bool focused);
  
    /**
-    * @brief Connect to this signal to be notified when page loading is started.
+    * @brief Callback to be called when page loading is started.
     *
-    * @return A signal object to connect with
+    * @param[in] callback
     */
-   WebViewPageLoadSignalType& PageLoadStartedSignal();
+   void RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when page loading is in progress.
+    * @brief Callback to be called when page loading is in progress.
     *
-    * @return A signal object to connect with
+    * @param[in] callback
     */
-   WebViewPageLoadSignalType& PageLoadInProgressSignal();
+   void RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when page loading is finished.
+    * @brief Callback to be called when page loading is finished.
     *
-    * @return A signal object to connect with
+    * @param[in] callback
     */
-   WebViewPageLoadSignalType& PageLoadFinishedSignal();
+   void RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when an error occurs in page loading.
+    * @brief Callback to be called when an error occurs in page loading.
     *
-    * @return A signal object to connect with
+    * @param[in] callback
     */
-   WebViewPageLoadErrorSignalType& PageLoadErrorSignal();
+   void RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when scroll edge is reached.
+    * @brief Callback to be called when scroll edge is reached.
     *
-    * @return A signal object to connect with
+    * @param[in] callback
     */
-   WebViewScrollEdgeReachedSignalType& ScrollEdgeReachedSignal();
+   void RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when url is changed.
+    * @brief Callback to be called when url is changed.
     *
-    * @return A signal object to connect with
+    * @param[in] callback
     */
-   WebViewUrlChangedSignalType& UrlChangedSignal();
+   void RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when form repost decision is requested.
+    * @brief Callback to be called when form repost decision is requested.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewFormRepostDecisionSignalType& FormRepostDecisionSignal();
+   void RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when frame is rendered.
+    * @brief Callback to be called when frame is rendered.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewFrameRenderedSignalType& FrameRenderedSignal();
+   void RegisterFrameRenderedCallback(Dali::WebEnginePlugin::WebEngineFrameRenderedCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when http request need be intercepted.
+    * @brief Callback to be called when http request need be intercepted.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewRequestInterceptorSignalType& RequestInterceptorSignal();
+   void RegisterRequestInterceptorCallback(Dali::WebEnginePlugin::WebEngineRequestInterceptorCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when console message will be logged.
+    * @brief Callback to be called when console message will be logged.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewConsoleMessageSignalType& ConsoleMessageSignal();
+   void RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when response policy would be decided.
+    * @brief Callback to be called when response policy would be decided.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewResponsePolicyDecisionSignalType& ResponsePolicyDecisionSignal();
+   void RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when certificate need be confirmed.
+    * @brief Callback to be called when certificate need be confirmed.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewCertificateSignalType& CertificateConfirmSignal();
+   void RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when ssl certificate is changed.
+    * @brief Callback to be called when ssl certificate is changed.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewCertificateSignalType& SslCertificateChangedSignal();
+   void RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when http authentication need be confirmed.
+    * @brief Callback to be called when http authentication need be confirmed.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewHttpAuthHandlerSignalType& HttpAuthHandlerSignal();
+   void RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when context menu would be shown.
+    * @brief Callback to be called when context menu would be shown.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewContextMenuShownSignalType& ContextMenuShownSignal();
+   void RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback);
  
    /**
-    * @brief Connect to this signal to be notified when context menu would be hidden.
+    * @brief Callback to be called when context menu would be hidden.
     *
-    * @return A signal object to connect with.
+    * @param[in] callback
     */
-   WebViewContextMenuHiddenSignalType& ContextMenuHiddenSignal();
+   void RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback);
  
  public: // Not intended for application developers
    /// @cond internal
index 7ae7543,c7805f8..0457186
mode 100644,100755..100755
@@@ -87,23 -87,6 +87,6 @@@ DALI_PROPERTY_REGISTRATION(Toolkit, Web
  DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "textZoomFactor",          FLOAT,   TEXT_ZOOM_FACTOR          )
  DALI_PROPERTY_REGISTRATION(Toolkit, WebView, "loadProgressPercentage",  FLOAT,   LOAD_PROGRESS_PERCENTAGE  )
  
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadStarted",       PAGE_LOAD_STARTED_SIGNAL      )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadInProgress",    PAGE_LOAD_IN_PROGRESS_SIGNAL  )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadFinished",      PAGE_LOAD_FINISHED_SIGNAL     )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "pageLoadError",         PAGE_LOAD_ERROR_SIGNAL        )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "scrollEdgeReached",     SCROLL_EDGE_REACHED_SIGNAL    )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "urlChanged",            URL_CHANGED_SIGNAL            )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "formRepostDecision",    FORM_REPOST_DECISION_SIGNAL   )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "frameRendered",         FRAME_RENDERED_SIGNAL         )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "requestInterceptor",    REQUEST_INTERCEPTOR_SIGNAL    )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "consoleMessage",        CONSOLE_MESSAGE_SIGNAL        )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "responsePolicyDecided", POLICY_DECISION               )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "certificateConfirm",    CERTIFICATE_CONFIRM_SIGNAL    )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "sslCertificateChanged", SSL_CERTIFICATE_CHANGED_SIGNAL)
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "httpAuthRequest",       HTTP_AUTH_REQUEST_SIGNAL      )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "contextMenuShown",      CONTEXT_MENU_SHOWN_SIGNAL     )
- DALI_SIGNAL_REGISTRATION(Toolkit, WebView, "contextMenuHidden",     CONTEXT_MENU_HIDDEN_SIGNAL    )
  DALI_TYPE_REGISTRATION_END()
  // clang-format on
  
@@@ -120,12 -103,8 +103,8 @@@ WebView::WebView(const std::string& loc
    mVisual(),
    mWebViewSize(Stage::GetCurrent().GetSize()),
    mWebEngine(),
-   mPageLoadStartedSignal(),
-   mPageLoadFinishedSignal(),
-   mPageLoadErrorSignal(),
-   mUrlChangedSignal(),
    mWebViewArea(0, 0, mWebViewSize.width, mWebViewSize.height),
 -  mVideoHoleEnabled(true),
 +  mVideoHoleEnabled(false),
    mMouseEventsEnabled(true),
    mKeyEventsEnabled(true),
    mScreenshotCapturedCallback(nullptr)
@@@ -144,12 -123,8 +123,8 @@@ WebView::WebView(uint32_t argc, char** 
    mVisual(),
    mWebViewSize(Stage::GetCurrent().GetSize()),
    mWebEngine(),
-   mPageLoadStartedSignal(),
-   mPageLoadFinishedSignal(),
-   mPageLoadErrorSignal(),
-   mUrlChangedSignal(),
    mWebViewArea(0, 0, mWebViewSize.width, mWebViewSize.height),
 -  mVideoHoleEnabled(true),
 +  mVideoHoleEnabled(false),
    mMouseEventsEnabled(true),
    mKeyEventsEnabled(true),
    mScreenshotCapturedCallback(nullptr)
@@@ -172,6 -147,7 +147,7 @@@ WebView::~WebView(
  {
    if(mWebEngine)
    {
+     mWebEngine.FrameRenderedSignal().Disconnect(this, &WebView::OnFrameRendered);
      mWebEngine.Destroy();
    }
  }
@@@ -222,23 -198,7 +198,7 @@@ void WebView::OnInitialize(
  
    if(mWebEngine)
    {
-     mWebEngine.PageLoadStartedSignal().Connect(this, &WebView::OnPageLoadStarted);
-     mWebEngine.PageLoadInProgressSignal().Connect(this, &WebView::OnPageLoadInProgress);
-     mWebEngine.PageLoadFinishedSignal().Connect(this, &WebView::OnPageLoadFinished);
-     mWebEngine.PageLoadErrorSignal().Connect(this, &WebView::OnPageLoadError);
-     mWebEngine.ScrollEdgeReachedSignal().Connect(this, &WebView::OnScrollEdgeReached);
-     mWebEngine.UrlChangedSignal().Connect(this, &WebView::OnUrlChanged);
-     mWebEngine.FormRepostDecisionSignal().Connect(this, &WebView::OnFormRepostDecision);
      mWebEngine.FrameRenderedSignal().Connect(this, &WebView::OnFrameRendered);
-     mWebEngine.RequestInterceptorSignal().Connect(this, &WebView::OnInterceptRequest);
-     mWebEngine.ConsoleMessageSignal().Connect(this, &WebView::OnConsoleMessage);
-     mWebEngine.ResponsePolicyDecisionSignal().Connect(this, &WebView::OnResponsePolicyDecided);
-     mWebEngine.CertificateConfirmSignal().Connect(this, &WebView::OnCertificateConfirm);
-     mWebEngine.SslCertificateChangedSignal().Connect(this, &WebView::OnSslCertificateChanged);
-     mWebEngine.HttpAuthHandlerSignal().Connect(this, &WebView::OnHttpAuthenticationRequest);
-     mWebEngine.ContextMenuShownSignal().Connect(this, &WebView::OnContextMenuShown);
-     mWebEngine.ContextMenuHiddenSignal().Connect(this, &WebView::OnContextMenuHidden);
      mWebContext         = std::unique_ptr<Dali::Toolkit::WebContext>(new WebContext(mWebEngine.GetContext()));
      mWebCookieManager   = std::unique_ptr<Dali::Toolkit::WebCookieManager>(new WebCookieManager(mWebEngine.GetCookieManager()));
      mWebSettings        = std::unique_ptr<Dali::Toolkit::WebSettings>(new WebSettings(mWebEngine.GetSettings()));
@@@ -680,155 -640,136 +640,136 @@@ Dali::Toolkit::ImageView WebView::Creat
    return imageView;
  }
  
Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadStartedSignal()
void WebView::RegisterPageLoadStartedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
  {
-   return mPageLoadStartedSignal;
- }
- Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadInProgressSignal()
- {
-   return mPageLoadInProgressSignal;
- }
- Dali::Toolkit::WebView::WebViewPageLoadSignalType& WebView::PageLoadFinishedSignal()
- {
-   return mPageLoadFinishedSignal;
- }
- Dali::Toolkit::WebView::WebViewPageLoadErrorSignalType& WebView::PageLoadErrorSignal()
- {
-   return mPageLoadErrorSignal;
- }
- Dali::Toolkit::WebView::WebViewScrollEdgeReachedSignalType& WebView::ScrollEdgeReachedSignal()
- {
-   return mScrollEdgeReachedSignal;
- }
- Dali::Toolkit::WebView::WebViewUrlChangedSignalType& WebView::UrlChangedSignal()
- {
-   return mUrlChangedSignal;
- }
- Dali::Toolkit::WebView::WebViewFormRepostDecisionSignalType& WebView::FormRepostDecisionSignal()
- {
-   return mFormRepostDecisionSignal;
- }
- Dali::Toolkit::WebView::WebViewFrameRenderedSignalType& WebView::FrameRenderedSignal()
- {
-   return mFrameRenderedSignal;
+   if(mWebEngine)
+   {
+     mWebEngine.RegisterPageLoadStartedCallback(callback);
+   }
  }
  
Dali::Toolkit::WebView::WebViewRequestInterceptorSignalType& WebView::RequestInterceptorSignal()
void WebView::RegisterPageLoadInProgressCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
  {
-   return mRequestInterceptorSignal;
+   if(mWebEngine)
+   {
+     mWebEngine.RegisterPageLoadInProgressCallback(callback);
+   }
  }
  
Dali::Toolkit::WebView::WebViewConsoleMessageSignalType& WebView::ConsoleMessageSignal()
void WebView::RegisterPageLoadFinishedCallback(Dali::WebEnginePlugin::WebEnginePageLoadCallback callback)
  {
-   return mConsoleMessageSignal;
+   if(mWebEngine)
+   {
+     mWebEngine.RegisterPageLoadFinishedCallback(callback);
+   }
  }
  
Dali::Toolkit::WebView::WebViewResponsePolicyDecisionSignalType& WebView::ResponsePolicyDecisionSignal()
void WebView::RegisterPageLoadErrorCallback(Dali::WebEnginePlugin::WebEnginePageLoadErrorCallback callback)
  {
-   return mResponsePolicyDecisionSignal;
+   if(mWebEngine)
+   {
+     mWebEngine.RegisterPageLoadErrorCallback(callback);
+   }
  }
  
Dali::Toolkit::WebView::WebViewCertificateSignalType& WebView::CertificateConfirmSignal()
void WebView::RegisterScrollEdgeReachedCallback(Dali::WebEnginePlugin::WebEngineScrollEdgeReachedCallback callback)
  {
-   return mCertificateConfirmSignal;
+   if(mWebEngine)
+   {
+     mWebEngine.RegisterScrollEdgeReachedCallback(callback);
+   }
  }
  
Dali::Toolkit::WebView::WebViewCertificateSignalType& WebView::SslCertificateChangedSignal()
void WebView::RegisterUrlChangedCallback(Dali::WebEnginePlugin::WebEngineUrlChangedCallback callback)
  {
-   return mSslCertificateChangedSignal;
+   if(mWebEngine)
+   {
+     mWebEngine.RegisterUrlChangedCallback(callback);
+   }
  }
  
Dali::Toolkit::WebView::WebViewHttpAuthHandlerSignalType& WebView::HttpAuthHandlerSignal()
void WebView::RegisterFormRepostDecidedCallback(Dali::WebEnginePlugin::WebEngineFormRepostDecidedCallback callback)
  {
-   return mHttpAuthHandlerSignal;
+   if(mWebEngine)
+   {
+     mWebEngine.RegisterFormRepostDecidedCallback(callback);
+   }
  }
  
Dali::Toolkit::WebView::WebViewContextMenuShownSignalType& WebView::ContextMenuShownSignal()
void WebView::RegisterFrameRenderedCallback(Dali::WebEnginePlugin::WebEngineFrameRenderedCallback callback)
  {
-   return mContextMenuShownSignal;
+   mFrameRenderedCallback = callback;
  }
  
Dali::Toolkit::WebView::WebViewContextMenuHiddenSignalType& WebView::ContextMenuHiddenSignal()
void WebView::RegisterRequestInterceptorCallback(Dali::WebEnginePlugin::WebEngineRequestInterceptorCallback callback)
  {
-   return mContextMenuHiddenSignal;
+   if(mWebEngine)
+   {
+     mWebEngine.RegisterRequestInterceptorCallback(callback);
+   }
  }
  
- void WebView::OnPageLoadStarted(const std::string& url)
+ void WebView::RegisterConsoleMessageReceivedCallback(Dali::WebEnginePlugin::WebEngineConsoleMessageReceivedCallback callback)
  {
-   if(!mPageLoadStartedSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mPageLoadStartedSignal.Emit(handle, url);
+     mWebEngine.RegisterConsoleMessageReceivedCallback(callback);
    }
  }
  
- void WebView::OnPageLoadInProgress(const std::string& url)
+ void WebView::RegisterResponsePolicyDecidedCallback(Dali::WebEnginePlugin::WebEngineResponsePolicyDecidedCallback callback)
  {
-   if(!mPageLoadInProgressSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mPageLoadInProgressSignal.Emit(handle, url);
+     mWebEngine.RegisterResponsePolicyDecidedCallback(callback);
    }
  }
  
- void WebView::OnPageLoadFinished(const std::string& url)
+ void WebView::RegisterCertificateConfirmedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
  {
-   if(!mPageLoadFinishedSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mPageLoadFinishedSignal.Emit(handle, url);
+     mWebEngine.RegisterCertificateConfirmedCallback(callback);
    }
  }
  
- void WebView::OnPageLoadError(std::shared_ptr<Dali::WebEngineLoadError> error)
+ void WebView::RegisterSslCertificateChangedCallback(Dali::WebEnginePlugin::WebEngineCertificateCallback callback)
  {
-   if(!mPageLoadErrorSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mPageLoadErrorSignal.Emit(handle, std::move(error));
+     mWebEngine.RegisterSslCertificateChangedCallback(callback);
    }
  }
  
- void WebView::OnScrollEdgeReached(Dali::WebEnginePlugin::ScrollEdge edge)
+ void WebView::RegisterHttpAuthHandlerCallback(Dali::WebEnginePlugin::WebEngineHttpAuthHandlerCallback callback)
  {
-   if(!mScrollEdgeReachedSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mScrollEdgeReachedSignal.Emit(handle, edge);
+     mWebEngine.RegisterHttpAuthHandlerCallback(callback);
    }
  }
  
- void WebView::OnUrlChanged(const std::string& url)
+ void WebView::RegisterContextMenuShownCallback(Dali::WebEnginePlugin::WebEngineContextMenuShownCallback callback)
  {
-   if(!mUrlChangedSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mUrlChangedSignal.Emit(handle, url);
+     mWebEngine.RegisterContextMenuShownCallback(callback);
    }
  }
  
- void WebView::OnFormRepostDecision(std::shared_ptr<Dali::WebEngineFormRepostDecision> decision)
+ void WebView::RegisterContextMenuHiddenCallback(Dali::WebEnginePlugin::WebEngineContextMenuHiddenCallback callback)
  {
-   if(!mFormRepostDecisionSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mFormRepostDecisionSignal.Emit(handle, std::move(decision));
+     mWebEngine.RegisterContextMenuHiddenCallback(callback);
    }
  }
  
  void WebView::OnFrameRendered()
  {
-   if(!mFrameRenderedSignal.Empty())
+   if(mFrameRenderedCallback)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mFrameRenderedSignal.Emit(handle);
+     mFrameRenderedCallback();
    }
  }
  
@@@ -864,167 -805,72 +805,72 @@@ void WebView::OnScreenshotCaptured(Dali
    }
  }
  
- void WebView::OnInterceptRequest(std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor)
+ void WebView::OnSceneConnection(int depth)
  {
-   if(!mRequestInterceptorSignal.Empty())
-   {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mRequestInterceptorSignal.Emit(handle, std::move(interceptor));
-   }
+   Control::OnSceneConnection(depth);
+   EnableBlendMode(!mVideoHoleEnabled);
  }
  
void WebView::OnConsoleMessage(std::shared_ptr<Dali::WebEngineConsoleMessage> message)
bool WebView::OnTouchEvent(Actor actor, const Dali::TouchEvent& touch)
  {
-   if(!mConsoleMessageSignal.Empty())
-   {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mConsoleMessageSignal.Emit(handle, std::move(message));
-   }
- }
+   bool result = false;
  
- void WebView::OnResponsePolicyDecided(std::shared_ptr<Dali::WebEnginePolicyDecision> decision)
- {
-   if(!mResponsePolicyDecisionSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mResponsePolicyDecisionSignal.Emit(handle, std::move(decision));
+     result = mWebEngine.SendTouchEvent(touch);
    }
+   return result;
  }
  
void WebView::OnCertificateConfirm(std::shared_ptr<Dali::WebEngineCertificate> certificate)
bool WebView::OnKeyEvent(const Dali::KeyEvent& event)
  {
-   if(!mCertificateConfirmSignal.Empty())
-   {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mCertificateConfirmSignal.Emit(handle, std::move(certificate));
-   }
- }
+   bool result = false;
  
- void WebView::OnSslCertificateChanged(std::shared_ptr<Dali::WebEngineCertificate> certificate)
- {
-   if(!mSslCertificateChangedSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mSslCertificateChangedSignal.Emit(handle, std::move(certificate));
+     result = mWebEngine.SendKeyEvent(event);
    }
+   return result;
  }
  
void WebView::OnHttpAuthenticationRequest(std::shared_ptr<Dali::WebEngineHttpAuthHandler> handler)
bool WebView::OnHoverEvent(Actor actor, const Dali::HoverEvent& hover)
  {
-   if(!mHttpAuthHandlerSignal.Empty())
+   bool result = false;
+   if(mWebEngine && mMouseEventsEnabled)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mHttpAuthHandlerSignal.Emit(handle, std::move(handler));
+     result = mWebEngine.SendHoverEvent(hover);
    }
+   return result;
  }
  
void WebView::OnContextMenuShown(std::shared_ptr<Dali::WebEngineContextMenu> menu)
bool WebView::OnWheelEvent(Actor actor, const Dali::WheelEvent& wheel)
  {
-   if(!mContextMenuShownSignal.Empty())
+   bool result = false;
+   if(mWebEngine && mMouseEventsEnabled)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mContextMenuShownSignal.Emit(handle, std::move(menu));
+     result = mWebEngine.SendWheelEvent(wheel);
    }
+   return result;
  }
  
- void WebView::OnContextMenuHidden(std::shared_ptr<Dali::WebEngineContextMenu> menu)
+ void WebView::OnKeyInputFocusGained()
  {
-   if(!mContextMenuHiddenSignal.Empty())
+   if(mWebEngine)
    {
-     Dali::Toolkit::WebView handle(GetOwner());
-     mContextMenuHiddenSignal.Emit(handle, std::move(menu));
+     mWebEngine.SetFocus(true);
    }
+   EmitKeyInputFocusSignal(true); // Calls back into the Control hence done last.
  }
  
bool WebView::DoConnectSignal(BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor)
void WebView::OnKeyInputFocusLost()
  {
-   Dali::BaseHandle handle(object);
-   bool             connected = false;
-   Toolkit::WebView webView   = Toolkit::WebView::DownCast(handle);
-   if(0 == strcmp(signalName.c_str(), PAGE_LOAD_STARTED_SIGNAL))
-   {
-     webView.PageLoadStartedSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), PAGE_LOAD_IN_PROGRESS_SIGNAL))
-   {
-     webView.PageLoadInProgressSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), PAGE_LOAD_FINISHED_SIGNAL))
-   {
-     webView.PageLoadFinishedSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), PAGE_LOAD_ERROR_SIGNAL))
-   {
-     webView.PageLoadErrorSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), SCROLL_EDGE_REACHED_SIGNAL))
-   {
-     webView.ScrollEdgeReachedSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), URL_CHANGED_SIGNAL))
-   {
-     webView.UrlChangedSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), FORM_REPOST_DECISION_SIGNAL))
-   {
-     webView.FormRepostDecisionSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), FRAME_RENDERED_SIGNAL))
-   {
-     webView.FrameRenderedSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), REQUEST_INTERCEPTOR_SIGNAL))
-   {
-     webView.RequestInterceptorSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), CONSOLE_MESSAGE_SIGNAL))
-   {
-     webView.ConsoleMessageSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), POLICY_DECISION))
-   {
-     webView.ResponsePolicyDecisionSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), CERTIFICATE_CONFIRM_SIGNAL))
-   {
-     webView.CertificateConfirmSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), SSL_CERTIFICATE_CHANGED_SIGNAL))
-   {
-     webView.SslCertificateChangedSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), HTTP_AUTH_REQUEST_SIGNAL))
-   {
-     webView.HttpAuthHandlerSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), CONTEXT_MENU_SHOWN_SIGNAL))
-   {
-     webView.ContextMenuShownSignal().Connect(tracker, functor);
-     connected = true;
-   }
-   else if(0 == strcmp(signalName.c_str(), CONTEXT_MENU_HIDDEN_SIGNAL))
+   if(mWebEngine)
    {
-     webView.ContextMenuHiddenSignal().Connect(tracker, functor);
-     connected = true;
+     mWebEngine.SetFocus(false);
    }
  
-   return connected;
+   EmitKeyInputFocusSignal(false); // Calls back into the Control hence done last.
  }
  
  Vector3 WebView::GetNaturalSize()
    return Vector3(mWebViewSize);
  }
  
- void WebView::OnSceneConnection(int depth)
- {
-   Control::OnSceneConnection(depth);
-   EnableBlendMode(!mVideoHoleEnabled);
- }
  void WebView::SetProperty(BaseObject* object, Property::Index index, const Property::Value& value)
  {
    Toolkit::WebView webView = Toolkit::WebView::DownCast(Dali::BaseHandle(object));
@@@ -1253,68 -1092,6 +1092,6 @@@ Property::Value WebView::GetProperty(Ba
    return value;
  }
  
- bool WebView::OnTouchEvent(Actor actor, const Dali::TouchEvent& touch)
- {
-   bool result = false;
-   if(mWebEngine)
-   {
-     result = mWebEngine.SendTouchEvent(touch);
-   }
-   return result;
- }
- bool WebView::OnKeyEvent(const Dali::KeyEvent& event)
- {
-   bool result = false;
-   if(mWebEngine)
-   {
-     result = mWebEngine.SendKeyEvent(event);
-   }
-   return result;
- }
- bool WebView::OnHoverEvent(Actor actor, const Dali::HoverEvent& hover)
- {
-   bool result = false;
-   if(mWebEngine && mMouseEventsEnabled)
-   {
-     result = mWebEngine.SendHoverEvent(hover);
-   }
-   return result;
- }
- bool WebView::OnWheelEvent(Actor actor, const Dali::WheelEvent& wheel)
- {
-   bool result = false;
-   if(mWebEngine && mMouseEventsEnabled)
-   {
-     result = mWebEngine.SendWheelEvent(wheel);
-   }
-   return result;
- }
- void WebView::OnKeyInputFocusGained()
- {
-   if(mWebEngine)
-   {
-     mWebEngine.SetFocus(true);
-   }
-   EmitKeyInputFocusSignal(true); // Calls back into the Control hence done last.
- }
- void WebView::OnKeyInputFocusLost()
- {
-   if(mWebEngine)
-   {
-     mWebEngine.SetFocus(false);
-   }
-   EmitKeyInputFocusSignal(false); // Calls back into the Control hence done last.
- }
  void WebView::SetScrollPosition(int32_t x, int32_t y)
  {
    if(mWebEngine)