X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-WebView.cpp;h=36a058d6efad741c36bdab04445abdf1ae6d691b;hp=e2ee8e6dc4ac8b181872d952ecc6f0cec7b8b689;hb=3890e8d5e0d6c13b7a20538b0de12125946f6d87;hpb=f558388c388bcdf4939ca7af098cbcfc1631ad89 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp old mode 100644 new mode 100755 index e2ee8e6..36a058d --- a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,12 +22,20 @@ #include "dali-toolkit-test-utils/toolkit-timer.h" #include +#include #include #include +#include +#include +#include #include +#include +#include +#include +#include +#include #include - using namespace Dali; using namespace Toolkit; @@ -38,8 +46,17 @@ const char* const TEST_URL1( "http://www.somewhere.valid1.com" ); const char* const TEST_URL2( "http://www.somewhere.valid2.com" ); static int gPageLoadStartedCallbackCalled = 0; +static int gPageLoadInProgressCallbackCalled = 0; static int gPageLoadFinishedCallbackCalled = 0; +static int gScrollEdgeReachedCallbackCalled = 0; +static int gUrlChangedCallbackCalled = 0; +static int gEvaluateJavaScriptCallbackCalled = 0; +static int gJavaScriptAlertCallbackCalled = 0; +static int gJavaScriptConfirmCallbackCalled = 0; +static int gJavaScriptPromptCallbackCalled = 0; static bool gTouched = false; +static bool gHovered = false; +static bool gWheelEventHandled = false; struct CallbackFunctor { @@ -60,17 +77,71 @@ static void OnPageLoadStarted( WebView view, const std::string& url ) gPageLoadStartedCallbackCalled++; } +static void OnPageLoadInProgress( WebView view, const std::string& url ) +{ + gPageLoadInProgressCallbackCalled++; +} + static void OnPageLoadFinished( WebView view, const std::string& url ) { gPageLoadFinishedCallbackCalled++; } -static bool OnTouched( Actor actor, const Dali::TouchData& touch ) +static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge edge ) +{ + gScrollEdgeReachedCallbackCalled++; +} + +static void OnUrlChanged( WebView view, const std::string& url ) +{ + gUrlChangedCallbackCalled++; +} + +static void OnPageLoadError( WebView view, const std::string& url, WebView::LoadErrorCode errorCode ) +{ +} + +static void OnEvaluateJavaScript( const std::string& result ) +{ + gEvaluateJavaScriptCallbackCalled++; +} + +static bool OnJavaScriptAlert( const std::string& result ) +{ + gJavaScriptAlertCallbackCalled++; + return true; +} + +static bool OnJavaScriptConfirm( const std::string& result ) +{ + gJavaScriptConfirmCallbackCalled++; + return true; +} + +static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& message2 ) +{ + gJavaScriptPromptCallbackCalled++; + return true; +} + +static bool OnTouched( Actor actor, const Dali::TouchEvent& touch ) { gTouched = true; return true; } +static bool OnHovered( Actor actor, const Dali::HoverEvent& hover ) +{ + gHovered = true; + return true; +} + +static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel ) +{ + gWheelEventHandled = true; + return true; +} + } // namespace void web_view_startup(void) @@ -134,48 +205,60 @@ int UtcDaliWebViewPageNavigation(void) ToolkitTestApplication application; WebView view = WebView::New(); - view.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - view.SetParentOrigin( ParentOrigin::TOP_LEFT ); - view.SetPosition( 0, 0 ); - view.SetSize( 800, 600 ); - Stage::GetCurrent().Add( view ); + view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 )); + view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) ); + application.GetScene().Add( view ); application.SendNotification(); application.Render(); DALI_TEST_CHECK( view ); ConnectionTracker* testTracker = new ConnectionTracker(); view.PageLoadStartedSignal().Connect( &OnPageLoadStarted ); + view.PageLoadInProgressSignal().Connect( &OnPageLoadInProgress ); view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished ); + view.PageLoadErrorSignal().Connect( &OnPageLoadError ); + 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, "pageLoadFinished", CallbackFunctor(&signal2) ); - view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal3) ); + view.ConnectSignal( testTracker, "pageLoadInProgress", CallbackFunctor(&signal2) ); + view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal3) ); + view.ConnectSignal( testTracker, "urlChanged", CallbackFunctor(&signal4) ); + view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal5) ); DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 0, TEST_LOCATION ); DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 0, TEST_LOCATION ); - + DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 0, TEST_LOCATION ); view.LoadUrl( TEST_URL1 ); view.GetNaturalSize(); Test::EmitGlobalTimerSignal(); - DALI_TEST_CHECK( view.GetUrl().find( TEST_URL1 ) != std::string::npos ); DALI_TEST_EQUALS( view.CanGoBack(), false, TEST_LOCATION ); DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 1, TEST_LOCATION ); DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 1, TEST_LOCATION ); - DALI_TEST_CHECK( signal1 & signal2 ); - DALI_TEST_CHECK( !signal3 ); + DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_CHECK( signal1 & signal2 & signal3 & signal4 ); + DALI_TEST_CHECK( !signal5 ); view.LoadUrl( TEST_URL2 ); - view.SetSize( 400, 300 ); + view.Suspend(); + view.SetProperty( Actor::Property::SIZE, Vector2( 400, 300 ) ); application.SendNotification(); application.Render(); Test::EmitGlobalTimerSignal(); - DALI_TEST_CHECK( view.GetUrl().find( TEST_URL2 ) != std::string::npos ); + view.Resume(); DALI_TEST_EQUALS( view.CanGoBack(), true, TEST_LOCATION ); DALI_TEST_EQUALS( view.CanGoForward(), false, TEST_LOCATION ); DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 2, TEST_LOCATION ); + DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 2, TEST_LOCATION ); DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 2, TEST_LOCATION ); + DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 2, TEST_LOCATION ); view.GoBack(); Test::EmitGlobalTimerSignal(); @@ -190,7 +273,6 @@ int UtcDaliWebViewPageNavigation(void) view.Reload(); view.StopLoading(); view.ClearHistory(); - view.ClearCache(); Test::EmitGlobalTimerSignal(); DALI_TEST_CHECK( !view.CanGoBack() ); DALI_TEST_CHECK( !view.CanGoForward() ); @@ -203,17 +285,17 @@ int UtcDaliWebViewTouchAndKeys(void) ToolkitTestApplication application; WebView view = WebView::New(); - view.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - view.SetParentOrigin( ParentOrigin::TOP_LEFT ); - view.SetPosition( 0, 0 ); - view.SetSize( 800, 600 ); + view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 )); + view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) ); - Stage::GetCurrent().Add( view ); + application.GetScene().Add( view ); application.SendNotification(); application.Render(); view.GetNaturalSize(); - view.TouchSignal().Connect( &OnTouched ); + view.TouchedSignal().Connect( &OnTouched ); // Touch event Dali::Integration::TouchEvent event; @@ -233,7 +315,7 @@ int UtcDaliWebViewTouchAndKeys(void) // Key event Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( view ); - application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::Down, "", "", Device::Class::NONE, Device::Subclass::NONE ) ); + application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) ); application.SendNotification(); DALI_TEST_CHECK( gTouched ); @@ -242,8 +324,241 @@ int UtcDaliWebViewTouchAndKeys(void) END_TEST; } +int UtcDaliWebViewFocusGainedAndLost(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 )); + view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) ); + + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); + + view.SetKeyInputFocus(); + DALI_TEST_CHECK( view.HasKeyInputFocus() ); + + // reset + view.ClearKeyInputFocus(); + DALI_TEST_CHECK( !view.HasKeyInputFocus() ); + + END_TEST; +} + +int UtcDaliWebViewMove(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 )); + view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) ); + + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); + + view.SetProperty( Actor::Property::POSITION, Vector2( 100, 100 )); + Vector3 viewPos = view.GetProperty( Actor::Property::POSITION ); + DALI_TEST_EQUALS( viewPos, Vector3( 100, 100, 0 ), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewPropertyVideoHoleEnabled(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + const bool kDefaultValue = true; + const bool kTestValue = false; + + // Check default value + bool output; + Property::Value value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED ); + DALI_TEST_CHECK( value.Get( output ) ); + DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION ); + + // Check Set/GetProperty + view.SetProperty( WebView::Property::VIDEO_HOLE_ENABLED, kTestValue ); + value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED ); + DALI_TEST_CHECK( value.Get( output ) ); + DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewPropertyMouseEventsEnabled(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + const bool kDefaultValue = true; + const bool kTestValue = false; + + // Check default value + bool output; + Property::Value value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED ); + DALI_TEST_CHECK( value.Get( output ) ); + DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION ); + + // Check Set/GetProperty + view.SetProperty( WebView::Property::MOUSE_EVENTS_ENABLED, kTestValue ); + value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED ); + DALI_TEST_CHECK( value.Get( output ) ); + DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewPropertyKeyEventsEnabled(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + const bool kDefaultValue = true; + const bool kTestValue = false; + + // Check default value + bool output; + Property::Value value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED ); + DALI_TEST_CHECK( value.Get( output ) ); + DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION ); + + // Check Set/GetProperty + view.SetProperty( WebView::Property::KEY_EVENTS_ENABLED, kTestValue ); + value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED ); + DALI_TEST_CHECK( value.Get( output ) ); + DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewHoverAndWheel(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 )); + view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) ); + + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); + + view.GetNaturalSize(); + view.HoveredSignal().Connect( &OnHovered ); + view.WheelEventSignal().Connect( &OnWheelEvent ); + + // Hover event + Dali::Integration::HoverEvent event = Dali::Integration::HoverEvent(); + Dali::Integration::Point pointDown; + pointDown.SetState( PointState::DOWN ); + pointDown.SetScreenPosition( Vector2( 10, 10 ) ); + event.AddPoint( pointDown ); + application.ProcessEvent( event ); + + event = Dali::Integration::HoverEvent(); + Dali::Integration::Point pointUp; + pointUp.SetState( PointState::UP ); + pointUp.SetScreenPosition( Vector2( 10, 10 ) ); + event.AddPoint( pointUp ); + application.ProcessEvent( event ); + + event = Dali::Integration::HoverEvent(); + Dali::Integration::Point pointMotion; + pointUp.SetState( PointState::MOTION ); + pointUp.SetScreenPosition( Vector2( 10, 10 ) ); + event.AddPoint( pointMotion ); + application.ProcessEvent( event ); + + // Wheel event + Dali::Integration::WheelEvent wheelEvent; + wheelEvent.type = Dali::Integration::WheelEvent::Type::MOUSE_WHEEL; + wheelEvent.direction = 0; + wheelEvent.point = Vector2( 20, 20 ); + wheelEvent.delta = 10; + application.ProcessEvent( wheelEvent ); + application.SendNotification(); + + DALI_TEST_CHECK( gHovered ); + DALI_TEST_CHECK( gWheelEventHandled ); + + END_TEST; +} + +int UtcDaliWebViewGetWebBackForwardList(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList(); + DALI_TEST_CHECK( bfList != 0 ); + + END_TEST; +} + +int UtcDaliWebViewGetWebContext(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebContext* context = view.GetContext(); + DALI_TEST_CHECK( context != 0 ); + + END_TEST; +} + +int UtcDaliWebViewGetWebCookieManager(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager(); + DALI_TEST_CHECK( cookieManager != 0 ); + + END_TEST; +} + +int UtcDaliWebViewGetWebSettings(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ); + + END_TEST; +} + int UtcDaliWebViewProperty1(void) { + // URL ToolkitTestApplication application; WebView view = WebView::New(); @@ -258,22 +573,818 @@ int UtcDaliWebViewProperty1(void) END_TEST; } -int UtcDaliWebViewMethodsForCoverage(void) +int UtcDaliWebViewProperty4(void) { + // USER_AGENT ToolkitTestApplication application; - WebView view = WebView::New( "ko-KR", "Asia/Seoul" ); + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); - view.LoadHTMLString( "Hello World!" ); - view.AddJavaScriptInterface( "jsObject", "jsFunction", - []( const std::string& arg ) -> std::string { - return arg + " World!"; - } - ); - view.EvaluateJavaScript( "jsObject.jsFunction('Hello')" ); - view.RemoveJavascriptInterface( "jsObject", "jsFunction" ); + const std::string kDefaultValue; + const std::string kTestValue = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36"; + + // Check default value + std::string output; + Property::Value value = view.GetProperty( WebView::Property::USER_AGENT ); + DALI_TEST_CHECK( value.Get( output ) ); + DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION ); + + // Check Set/GetProperty + view.SetProperty( WebView::Property::USER_AGENT, kTestValue ); + value = view.GetProperty( WebView::Property::USER_AGENT ); + DALI_TEST_CHECK( value.Get( output ) ); + DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewProperty9(void) +{ + // SCROLL_POSITION + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + // Check default value + Dali::Vector2 output = Dali::Vector2::ONE; + view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output ); + DALI_TEST_CHECK( output.x == 0 && output.y == 0 ); + + // Check Set/GetProperty + Dali::Vector2 testValue = Dali::Vector2( 100, 100 ); + view.SetProperty( WebView::Property::SCROLL_POSITION, testValue ); + view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output ); + DALI_TEST_EQUALS( output, testValue, TEST_LOCATION ); + + // Check default value of scroll size + output = Dali::Vector2::ONE; + view.GetProperty( WebView::Property::SCROLL_SIZE ).Get( output ); + DALI_TEST_CHECK( output.x == 500 && output.y == 500 ); + // Check default value of content size + output = Dali::Vector2::ONE; + view.GetProperty( WebView::Property::CONTENT_SIZE ).Get( output ); + DALI_TEST_CHECK( output.x == 500 && output.y == 500 ); + + END_TEST; +} + +int UtcDaliWebViewPropertyBackgroundColorSelectedTextEtc(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Vector4 testValue = Dali::Vector4(0.0f, 0.0f, 0.0f, 0.0f); + view.SetProperty(WebView::Property::DOCUMENT_BACKGROUND_COLOR, testValue); + view.SetProperty(WebView::Property::TILES_CLEARED_WHEN_HIDDEN, true); + view.SetProperty(WebView::Property::TILE_COVER_AREA_MULTIPLIER, 1.0f); + view.SetProperty(WebView::Property::CURSOR_ENABLED_BY_CLIENT, true); + + // Check default value + std::string testText("test"); + std::string output; + view.GetProperty(WebView::Property::SELECTED_TEXT).Get(output); + DALI_TEST_EQUALS(output, testText, TEST_LOCATION); + + END_TEST; +} + +int UtcDaliWebViewPropertyTitleFavicon(void) +{ + ToolkitTestApplication application; + + char argv[] = "--test"; + WebView view = WebView::New( 1, (char**)&argv ); + DALI_TEST_CHECK( view ); + + // reset something + view.ClearAllTilesResources(); + + // Check default value of title + std::string testValue("title"); + std::string output; + view.GetProperty( WebView::Property::TITLE ).Get( output ); + DALI_TEST_EQUALS( output, testValue, TEST_LOCATION ); + + // Check default value of favicon + Dali::Toolkit::ImageView* favicon = &view.GetFavicon(); + DALI_TEST_CHECK( favicon ); + Dali::Vector3 iconsize = favicon->GetProperty< Vector3 >( Dali::Actor::Property::SIZE ); + DALI_TEST_CHECK( ( int )iconsize.width == 2 && ( int )iconsize.height == 2 ); + + END_TEST; +} + +int UtcDaliWebViewScrollBy(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); DALI_TEST_CHECK( view ); + // load url. + ConnectionTracker* testTracker = new ConnectionTracker(); + view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached ); + bool signal1 = false; + view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) ); + DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION ); + + view.LoadUrl( TEST_URL1 ); + Test::EmitGlobalTimerSignal(); + + // set scroll position. + Dali::Vector2 output = Dali::Vector2::ONE; + Dali::Vector2 testValue = Dali::Vector2( 100, 100 ); + view.SetProperty( WebView::Property::SCROLL_POSITION, testValue ); + view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output ); + DALI_TEST_EQUALS( output, testValue, TEST_LOCATION ); + + // scroll by and trigger scrollEdgeReached event. + view.ScrollBy( 50, 50 ); + Test::EmitGlobalTimerSignal(); + + 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 ); + + END_TEST; +} + +int UtcDaliWebViewEvaluteJavaScript(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New( "ko-KR", "Asia/Seoul" ); + + view.LoadHtmlString( "Hello World!" ); + view.EvaluateJavaScript( "jsObject.postMessage('Hello')" ); + view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript ); + Test::EmitGlobalTimerSignal(); + + DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION ); + END_TEST; } + +int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New( "ko-KR", "Asia/Seoul" ); + + view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert ); + view.LoadHtmlString( "Hello World!" ); + view.JavaScriptAlertReply(); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION ); + + view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm ); + view.LoadHtmlString( "Hello World!" ); + view.JavaScriptConfirmReply( true ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION ); + + view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt ); + view.LoadHtmlString( "Hello World!" ); + view.JavaScriptPromptReply( "it is a prompt." ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewMethodsForCoverage(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New( "ko-KR", "Asia/Seoul" ); + + view.LoadHtmlString( "Hello World!" ); + view.AddJavaScriptMessageHandler( "jsObject", + []( const std::string& arg ) { + } + ); + + DALI_TEST_CHECK( view ); + + END_TEST; +} + +// test cases for web backforward list. + +int UtcDaliWebBackForwardListCheckItem(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList(); + DALI_TEST_CHECK( bfList != 0 ) + + unsigned int itemCount = bfList->GetItemCount(); + DALI_TEST_CHECK( itemCount == 1 ) + + Dali::Toolkit::WebBackForwardListItem* citem = bfList->GetCurrentItem(); + DALI_TEST_CHECK( citem != 0 ); + + const std::string kDefaultUrl( "http://url" ); + std::string testValue = citem->GetUrl(); + DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION ); + + const std::string kDefaultTitle( "title" ); + testValue = citem->GetTitle(); + DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION ); + + const std::string kDefaultOriginalUrl( "http://originalurl" ); + testValue = citem->GetOriginalUrl(); + DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION ); + + Dali::Toolkit::WebBackForwardListItem* item = bfList->GetItemAtIndex( 0 ); + DALI_TEST_CHECK( item != 0 ); + + END_TEST; +} + +// test cases for web context. + +int UtcDaliWebContextGetSetCacheModel(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebContext* context = view.GetContext(); + DALI_TEST_CHECK( context != 0 ) + + std::string kDefaultValue; + + // Reset something + context->SetProxyUri( kDefaultValue ); + context->SetCertificateFilePath( kDefaultValue ); + context->DisableCache( false ); + context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue ); + context->DeleteWebDatabase(); + context->DeleteWebStorage(); + context->DeleteLocalFileSystem(); + context->ClearCache(); + + // Check default value + Dali::WebEngineContext::CacheModel value = context->GetCacheModel(); + DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER ); + + // Check Set/GetProperty + context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER ); + value = context->GetCacheModel(); + DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER ); + + END_TEST; +} + +// test cases for web cookie manager. + +int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager(); + DALI_TEST_CHECK( cookieManager != 0 ) + + const std::string kDefaultValue; + + // Reset something + cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE ); + cookieManager->ClearCookies(); + + // Check default value + Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy(); + DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY ); + + // Check Set/GetProperty + cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS ); + value = cookieManager->GetCookieAcceptPolicy(); + DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS ); + + END_TEST; +} + +// test cases for web settings. + +int UtcDaliWebSettingsGetSetDefaultFontSize(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value + int value = settings->GetDefaultFontSize(); + DALI_TEST_CHECK( value == 16 ); + + // Check Set/GetProperty + settings->SetDefaultFontSize( 20 ); + value = settings->GetDefaultFontSize(); + DALI_TEST_CHECK( value == 20 ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableJavaScript(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsJavaScriptEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnableJavaScript( false ); + value = settings->IsJavaScriptEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableAutoFitting(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsAutoFittingEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnableAutoFitting( false ); + value = settings->IsAutoFittingEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnablePlugins(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->ArePluginsEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnablePlugins( false ); + value = settings->ArePluginsEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsPrivateBrowsingEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnablePrivateBrowsing( false ); + value = settings->IsPrivateBrowsingEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableLinkMagnifier(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsLinkMagnifierEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnableLinkMagnifier( false ); + value = settings->IsLinkMagnifierEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsKeypadWithoutUserActionUsed(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->UseKeypadWithoutUserAction( false ); + value = settings->IsKeypadWithoutUserActionUsed(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsAutofillPasswordFormEnabled(); + DALI_TEST_CHECK( value ); + settings->EnableAutofillPasswordForm( false ); + value = settings->IsAutofillPasswordFormEnabled(); + DALI_TEST_CHECK( !value ); + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableFormCandidateData(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ); + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsFormCandidateDataEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnableFormCandidateData( false ); + value = settings->IsFormCandidateDataEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableTextSelection(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ); + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsTextSelectionEnabled(); + DALI_TEST_CHECK( value ); + + //Check Set/GetProperty + settings->EnableTextSelection(false); + value = settings->IsTextSelectionEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableTextAutosizing(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ); + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsTextAutosizingEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnableTextAutosizing(false); + value = settings->IsTextAutosizingEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableArrowScroll(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ); + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsArrowScrollEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnableArrowScroll(false); + value = settings->IsArrowScrollEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableClipboard(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ); + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsClipboardEnabled(); + DALI_TEST_CHECK( value ); + settings->EnableClipboard(false); + value = settings->IsClipboardEnabled(); + DALI_TEST_CHECK( !value ); + END_TEST; +} + +int UtcDaliWebSettingsCheckEnableImePanel(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ); + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->IsImePanelEnabled(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->EnableImePanel(false); + value = settings->IsImePanelEnabled(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value is true or not + bool value = settings->AreImagesLoadedAutomatically(); + DALI_TEST_CHECK( value ); + + // Check Set/GetProperty + settings->AllowImagesLoadAutomatically( false ); + value = settings->AreImagesLoadedAutomatically(); + DALI_TEST_CHECK( !value ); + + END_TEST; +} + +int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + const std::string kDefaultValue; + const std::string kTestValue = "UTF-8"; + + // Reset something + settings->AllowMixedContents( false ); + settings->EnableSpatialNavigation( false ); + settings->EnableWebSecurity( false ); + settings->EnableCacheBuilder( false ); + settings->EnableDoNotTrack( false ); + settings->UseScrollbarThumbFocusNotifications( false ); + settings->AllowFileAccessFromExternalUrl( false ); + settings->AllowScriptsOpenWindows( false ); + + // Check default value + std::string value = settings->GetDefaultTextEncodingName(); + DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION ); + + // Check Set/GetProperty + settings->SetDefaultTextEncodingName( kTestValue ); + value = settings->GetDefaultTextEncodingName(); + DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION ); + + END_TEST; +} +