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=4e553e8c8c1f1ac512522378f1b94467c31e77bc;hp=adfa9f91f1c46644bd4ab304ac6f549cf41aff96;hb=8ebe42b2ca06a57a08b02a975146af34c1b9bcd6;hpb=5359a575636e678baf178dab5209b587be1a7551 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 adfa9f9..4e553e8 --- 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) 2020 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,32 @@ #include "dali-toolkit-test-utils/toolkit-timer.h" #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include +#include +#include +#include #include +#include +#include +#include +#include #include - using namespace Dali; using namespace Toolkit; @@ -38,9 +58,51 @@ 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 gPageLoadErrorCallbackCalled = 0; +static std::unique_ptr gPageLoadErrorInstance = nullptr; +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 int gScreenshotCapturedCallbackCalled = 0; +static int gVideoPlayingCallbackCalled = 0; +static int gGeolocationPermissionCallbackCalled = 0; static bool gTouched = false; +static bool gHovered = false; +static bool gWheelEventHandled = false; +static int gFormRepostDecidedCallbackCalled = 0; +static std::unique_ptr gFormRepostDecidedInstance = nullptr; +static int gFrameRenderedCallbackCalled = 0; +static int gConsoleMessageCallbackCalled = 0; +static std::unique_ptr gConsoleMessageInstance = nullptr; +static int gResponsePolicyDecidedCallbackCalled = 0; +static std::unique_ptr gResponsePolicyDecisionInstance = nullptr; +static int gCertificateConfirmCallbackCalled = 0; +static std::unique_ptr gCertificateConfirmInstance = nullptr; +static int gSslCertificateChangedCallbackCalled = 0; +static std::unique_ptr gSslCertificateInstance = nullptr; +static int gHttpAuthHandlerCallbackCalled = 0; +static std::unique_ptr gHttpAuthInstance = nullptr; +static int gSecurityOriginsAcquiredCallbackCalled = 0; +static int gStorageUsageAcquiredCallbackCalled = 0; +static int gFormPasswordsAcquiredCallbackCalled = 0; +static int gDownloadStartedCallbackCalled = 0; +static int gMimeOverriddenCallbackCalled = 0; +static int gRequestInterceptedCallbackCalled = 0; +static Dali::WebEngineRequestInterceptorPtr gRequestInterceptorInstance = nullptr; +static std::vector> gSecurityOriginList; +static std::vector> gPasswordDataList; +static int gContextMenuShownCallbackCalled = 0; +static std::unique_ptr gContextMenuShownInstance = nullptr; +static int gContextMenuHiddenCallbackCalled = 0; +static std::unique_ptr gContextMenuHiddenInstance = nullptr; +static int gHitTestCreatedCallbackCalled = 0; +static int gCookieManagerChangsWatchCallbackCalled = 0; +static int gPlainTextReceivedCallbackCalled = 0; struct CallbackFunctor { @@ -56,31 +118,201 @@ struct CallbackFunctor bool* mCallbackFlag; }; -static void OnPageLoadStarted( WebView view, const std::string& url ) +static void OnPageLoadStarted(const std::string& url) { gPageLoadStartedCallbackCalled++; } -static void OnPageLoadFinished( WebView view, const std::string& url ) +static void OnPageLoadInProgress(const std::string& url) +{ + gPageLoadInProgressCallbackCalled++; +} + +static void OnPageLoadFinished(const std::string& url) { gPageLoadFinishedCallbackCalled++; } -static void OnPageLoadError( WebView view, const std::string& url, WebView::LoadErrorCode errorCode ) +static void OnScrollEdgeReached(Dali::WebEnginePlugin::ScrollEdge edge) +{ + gScrollEdgeReachedCallbackCalled++; +} + +static void OnResponsePolicyDecided(std::unique_ptr decision) +{ + gResponsePolicyDecidedCallbackCalled++; + gResponsePolicyDecisionInstance = std::move(decision); +} + +static void OnUrlChanged(const std::string& url) +{ + gUrlChangedCallbackCalled++; +} + +static bool OnHitTestCreated(std::unique_ptr test) +{ + gHitTestCreatedCallbackCalled++; + return true; +} + +static bool OnPlainTextReceived(const std::string& plainText) +{ + gPlainTextReceivedCallbackCalled++; + return true; +} + +static void OnPageLoadError(std::unique_ptr 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) +{ + 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 void OnScreenshotCaptured(Dali::Toolkit::ImageView) +{ + gScreenshotCapturedCallbackCalled++; +} + +static void OnVideoPlaying(bool isPlaying) +{ + gVideoPlayingCallbackCalled++; +} + +static bool OnGeolocationPermission(const std::string&, const std::string&) +{ + gGeolocationPermissionCallbackCalled++; + return true; +} + static bool OnTouched( Actor actor, const Dali::TouchEvent& touch ) { gTouched = true; return true; } +static void OnChangesWatch() +{ + gCookieManagerChangsWatchCallbackCalled++; +} + +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; +} + +static void OnFormRepostDecided(std::unique_ptr decision) +{ + gFormRepostDecidedCallbackCalled++; + gFormRepostDecidedInstance = std::move(decision); +} + +static void OnFrameRendered() +{ + gFrameRenderedCallbackCalled++; +} + +static void OnConsoleMessage(std::unique_ptr message) +{ + gConsoleMessageCallbackCalled++; + gConsoleMessageInstance = std::move(message); +} + +static void OnCertificateConfirm(std::unique_ptr certificate) +{ + gCertificateConfirmCallbackCalled++; + gCertificateConfirmInstance = std::move(certificate); +} + +static void OnSslCertificateChanged(std::unique_ptr certificate) +{ + gSslCertificateChangedCallbackCalled++; + gSslCertificateInstance = std::move(certificate); +} + +static void OnHttpAuthHandler(std::unique_ptr hander) +{ + gHttpAuthHandlerCallbackCalled++; + gHttpAuthInstance = std::move(hander); +} + +static void OnSecurityOriginsAcquired(std::vector>& origins) +{ + gSecurityOriginsAcquiredCallbackCalled++; + gSecurityOriginList.clear(); + gSecurityOriginList.swap(origins); +} + +static void OnStorageUsageAcquired(uint64_t usage) +{ + gStorageUsageAcquiredCallbackCalled++; +} + +static void OnFormPasswordsAcquired(std::vector>& passwords) +{ + gFormPasswordsAcquiredCallbackCalled++; + gPasswordDataList.clear(); + gPasswordDataList.swap(passwords); +} + +static void OnDownloadStarted(const std::string& url) +{ + gDownloadStartedCallbackCalled++; +} + +static bool OnMimeOverridden(const std::string&, const std::string&, std::string&) +{ + gMimeOverriddenCallbackCalled++; + return false; +} + +static bool OnRequestIntercepted(Dali::WebEngineRequestInterceptorPtr interceptor) +{ + gRequestInterceptedCallbackCalled++; + gRequestInterceptorInstance = interceptor; + return false; +} + +static void OnContextMenuShown(std::unique_ptr menu) +{ + gContextMenuShownCallbackCalled++; + gContextMenuShownInstance = std::move(menu); +} + +static void OnContextMenuHidden(std::unique_ptr menu) +{ + gContextMenuHiddenCallbackCalled++; + gContextMenuHiddenInstance = std::move(menu); +} + } // namespace void web_view_startup(void) @@ -111,7 +343,6 @@ int UtcDaliWebViewBasics(void) assign = copy; DALI_TEST_CHECK( assign == view ); - // DownCast Test tet_infoline( "UtcDaliWebViewBasic DownCast Test" ); BaseHandle handle(view); @@ -121,7 +352,6 @@ int UtcDaliWebViewBasics(void) DALI_TEST_CHECK( view2 ); DALI_TEST_CHECK( view == view2 ); - // TypeRegistry Test tet_infoline( "UtcDaliWebViewBasic TypeRegistry Test" ); TypeRegistry typeRegistry = TypeRegistry::Get(); @@ -153,28 +383,23 @@ int UtcDaliWebViewPageNavigation(void) application.Render(); DALI_TEST_CHECK( view ); - ConnectionTracker* testTracker = new ConnectionTracker(); - view.PageLoadStartedSignal().Connect( &OnPageLoadStarted ); - view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished ); - view.PageLoadErrorSignal().Connect( &OnPageLoadError ); - bool signal1 = false; - bool signal2 = false; - bool signal3 = false; - view.ConnectSignal( testTracker, "pageLoadStarted", CallbackFunctor(&signal1) ); - view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal2) ); - view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal3) ); + 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( gUrlChangedCallbackCalled, 0, TEST_LOCATION ); view.LoadUrl( TEST_URL1 ); view.GetNaturalSize(); Test::EmitGlobalTimerSignal(); 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 ); view.LoadUrl( TEST_URL2 ); view.Suspend(); @@ -186,7 +411,9 @@ int UtcDaliWebViewPageNavigation(void) 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(); @@ -201,8 +428,6 @@ int UtcDaliWebViewPageNavigation(void) view.Reload(); view.StopLoading(); view.ClearHistory(); - view.ClearCache(); - view.ClearCookies(); Test::EmitGlobalTimerSignal(); DALI_TEST_CHECK( !view.CanGoBack() ); DALI_TEST_CHECK( !view.CanGoForward() ); @@ -210,6 +435,54 @@ int UtcDaliWebViewPageNavigation(void) END_TEST; } +int UtcDaliWebViewPageLoadErrorConsoleMessage(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + 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 ); + + view.RegisterPageLoadErrorCallback( &OnPageLoadError ); + view.RegisterConsoleMessageReceivedCallback( &OnConsoleMessage ); + DALI_TEST_EQUALS( gPageLoadErrorCallbackCalled, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( gConsoleMessageCallbackCalled, 0, TEST_LOCATION ); + + view.LoadUrl( TEST_URL1 ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gPageLoadErrorCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_EQUALS( gConsoleMessageCallbackCalled, 1, TEST_LOCATION ); + + // error code. + DALI_TEST_CHECK(gPageLoadErrorInstance); + DALI_TEST_EQUALS(gPageLoadErrorInstance->GetUrl(), TEST_URL1, TEST_LOCATION); + DALI_TEST_EQUALS(gPageLoadErrorInstance->GetCode(), Dali::WebEngineLoadError::ErrorCode::UNKNOWN, TEST_LOCATION); + std::string testErrorDescription("This is an error."); + DALI_TEST_EQUALS(gPageLoadErrorInstance->GetDescription(), testErrorDescription, TEST_LOCATION); + DALI_TEST_EQUALS(gPageLoadErrorInstance->GetType(), Dali::WebEngineLoadError::ErrorType::NONE, TEST_LOCATION); + + // console message. + DALI_TEST_CHECK(gConsoleMessageInstance); + std::string testConsoleSource("source"); + DALI_TEST_EQUALS(gConsoleMessageInstance->GetSource(), testConsoleSource, TEST_LOCATION); + DALI_TEST_EQUALS(gConsoleMessageInstance->GetLine(), 10, TEST_LOCATION); + DALI_TEST_EQUALS(gConsoleMessageInstance->GetSeverityLevel(), Dali::WebEngineConsoleMessage::SeverityLevel::EMPTY, TEST_LOCATION); + std::string testConsoleText("This is a text."); + DALI_TEST_EQUALS(gConsoleMessageInstance->GetText(), testConsoleText, TEST_LOCATION); + + // reset + gPageLoadErrorInstance = nullptr; + gConsoleMessageInstance = nullptr; + + END_TEST; +} + int UtcDaliWebViewTouchAndKeys(void) { ToolkitTestApplication application; @@ -254,247 +527,1805 @@ int UtcDaliWebViewTouchAndKeys(void) END_TEST; } -int UtcDaliWebViewProperty1(void) +int UtcDaliWebViewFocusGainedAndLost(void) { - // URL ToolkitTestApplication application; WebView view = WebView::New(); DALI_TEST_CHECK( view ); - std::string local; - view.SetProperty( WebView::Property::URL, TEST_URL1 ); - Property::Value val = view.GetProperty( WebView::Property::URL ); - DALI_TEST_CHECK( val.Get( local ) ); - DALI_TEST_EQUALS( local, TEST_URL1, TEST_LOCATION ); + 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 UtcDaliWebViewProperty2(void) +int UtcDaliWebViewPropertyPageZoomFactor(void) { - // CACHE_MODEL ToolkitTestApplication application; WebView view = WebView::New(); DALI_TEST_CHECK( view ); - const std::string kDefaultValue = "DOCUMENT_VIEWER"; - const WebView::CacheModel::Type kTestEnum = WebView::CacheModel::PRIMARY_WEB_BROWSER; - const std::string kTestValue = "PRIMARY_WEB_BROWSER"; + 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 ) ); - // Check default value - std::string output; - Property::Value value = view.GetProperty( WebView::Property::CACHE_MODEL ); - DALI_TEST_CHECK( value.Get( output ) ); - DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION ); + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); - // Check Set/GetProperty - view.SetProperty( WebView::Property::CACHE_MODEL, kTestEnum ); - value = view.GetProperty( WebView::Property::CACHE_MODEL ); - DALI_TEST_CHECK( value.Get( output ) ); - DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + view.SetProperty( WebView::Property::PAGE_ZOOM_FACTOR, 1.5f); + float zoomFactor = view.GetProperty( WebView::Property::PAGE_ZOOM_FACTOR ); + DALI_TEST_EQUALS( zoomFactor, 1.5f, TEST_LOCATION ); - view.SetProperty( WebView::Property::CACHE_MODEL, kTestValue ); - value = view.GetProperty( WebView::Property::CACHE_MODEL ); - DALI_TEST_CHECK( value.Get( output ) ); - DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + view.SetProperty( WebView::Property::PAGE_ZOOM_FACTOR, 1.0f); + zoomFactor = view.GetProperty( WebView::Property::PAGE_ZOOM_FACTOR ); + DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION ); END_TEST; } -int UtcDaliWebViewProperty3(void) +int UtcDaliWebViewPropertyTextZoomFactor(void) { - // COOKIE_ACCEPT_POLICY ToolkitTestApplication application; WebView view = WebView::New(); DALI_TEST_CHECK( view ); - const std::string kDefaultValue = "NO_THIRD_PARTY"; - const WebView::CookieAcceptPolicy::Type kTestEnum = WebView::CookieAcceptPolicy::NEVER; - const std::string kTestValue = "NEVER"; + 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 ) ); - // Check default value - std::string output; - Property::Value value = view.GetProperty( WebView::Property::COOKIE_ACCEPT_POLICY ); - DALI_TEST_CHECK( value.Get( output ) ); - DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION ); + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); - // Check Set/GetProperty - view.SetProperty( WebView::Property::COOKIE_ACCEPT_POLICY, kTestEnum ); - value = view.GetProperty( WebView::Property::COOKIE_ACCEPT_POLICY ); - DALI_TEST_CHECK( value.Get( output ) ); - DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + view.SetProperty( WebView::Property::TEXT_ZOOM_FACTOR, 1.5f); + float zoomFactor = view.GetProperty( WebView::Property::TEXT_ZOOM_FACTOR ); + DALI_TEST_EQUALS( zoomFactor, 1.5f, TEST_LOCATION ); - view.SetProperty( WebView::Property::COOKIE_ACCEPT_POLICY, kTestValue ); - value = view.GetProperty( WebView::Property::COOKIE_ACCEPT_POLICY ); - DALI_TEST_CHECK( value.Get( output ) ); - DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + view.SetProperty( WebView::Property::TEXT_ZOOM_FACTOR, 1.0f); + zoomFactor = view.GetProperty( WebView::Property::TEXT_ZOOM_FACTOR ); + DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION ); END_TEST; } -int UtcDaliWebViewProperty4(void) +int UtcDaliWebViewPropertyLoadProgressPercentage(void) { - // USER_AGENT ToolkitTestApplication application; WebView view = WebView::New(); DALI_TEST_CHECK( view ); - 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"; + 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 ) ); - // 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 ); + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); - // 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 ); + float percentage = view.GetProperty( WebView::Property::LOAD_PROGRESS_PERCENTAGE ); + DALI_TEST_EQUALS( percentage, 0.5f, TEST_LOCATION ); END_TEST; } -int UtcDaliWebViewProperty5(void) +int UtcDaliWebViewMove(void) { - // ENABLE_JAVASCRIPT ToolkitTestApplication application; WebView view = WebView::New(); DALI_TEST_CHECK( view ); - const bool kDefaultValue = true; - const bool kTestValue = false; + 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 ) ); - // Check default value - bool output; - Property::Value value = view.GetProperty( WebView::Property::ENABLE_JAVASCRIPT ); - DALI_TEST_CHECK( value.Get( output ) ); - DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION ); + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); - // Check Set/GetProperty - view.SetProperty( WebView::Property::ENABLE_JAVASCRIPT, kTestValue ); - value = view.GetProperty( WebView::Property::ENABLE_JAVASCRIPT ); - DALI_TEST_CHECK( value.Get( output ) ); - DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION ); + 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 UtcDaliWebViewProperty6(void) +int UtcDaliWebViewPropertyVideoHoleEnabled(void) { - // LOAD_IMAGES_AUTOMATICALLY ToolkitTestApplication application; 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; - Property::Value value = view.GetProperty( WebView::Property::LOAD_IMAGES_AUTOMATICALLY ); + 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::LOAD_IMAGES_AUTOMATICALLY, kTestValue ); - value = view.GetProperty( WebView::Property::LOAD_IMAGES_AUTOMATICALLY ); + 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 UtcDaliWebViewProperty7(void) +int UtcDaliWebViewPropertyMouseEventsEnabled(void) { - // DEFAULT_TEXT_ENCODING_NAME ToolkitTestApplication application; WebView view = WebView::New(); DALI_TEST_CHECK( view ); - const std::string kDefaultValue; - const std::string kTestValue = "UTF-8"; + const bool kDefaultValue = true; + const bool kTestValue = false; // Check default value - std::string output; - Property::Value value = view.GetProperty( WebView::Property::DEFAULT_TEXT_ENCODING_NAME ); + 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::DEFAULT_TEXT_ENCODING_NAME, kTestValue ); - value = view.GetProperty( WebView::Property::DEFAULT_TEXT_ENCODING_NAME ); + 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 UtcDaliWebViewProperty8(void) +int UtcDaliWebViewPropertyKeyEventsEnabled(void) { - // DEFAULT_FONT_SIZE ToolkitTestApplication application; WebView view = WebView::New(); DALI_TEST_CHECK( view ); - const int kDefaultValue = 16; - const int kTestValue = 26; + const bool kDefaultValue = true; + const bool kTestValue = false; // Check default value - int output; - Property::Value value = view.GetProperty( WebView::Property::DEFAULT_FONT_SIZE ); + 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::DEFAULT_FONT_SIZE, kTestValue ); - value = view.GetProperty( WebView::Property::DEFAULT_FONT_SIZE ); + 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 UtcDaliWebViewEvaluteJavaScript(void) +int UtcDaliWebViewHoverAndWheel(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(); + 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 ) ); - DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION ); + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); - END_TEST; -} + 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 ); -int UtcDaliWebViewMethodsForCoverage(void) -{ - ToolkitTestApplication application; + event = Dali::Integration::HoverEvent(); + Dali::Integration::Point pointUp; + pointUp.SetState( PointState::UP ); + pointUp.SetScreenPosition( Vector2( 10, 10 ) ); + event.AddPoint( pointUp ); + application.ProcessEvent( event ); - WebView view = WebView::New( "ko-KR", "Asia/Seoul" ); + event = Dali::Integration::HoverEvent(); + Dali::Integration::Point pointMotion; + pointUp.SetState( PointState::MOTION ); + pointUp.SetScreenPosition( Vector2( 10, 10 ) ); + event.AddPoint( pointMotion ); + application.ProcessEvent( event ); - view.LoadHTMLString( "Hello World!" ); - view.AddJavaScriptMessageHandler( "jsObject", - []( const std::string& arg ) { - } - ); + // 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( view ); + DALI_TEST_CHECK( gHovered ); + DALI_TEST_CHECK( gWheelEventHandled ); END_TEST; } + +int UtcDaliWebViewFormRepostDecidedFrameRendering(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + 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 ); + + 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( gFormRepostDecidedCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 1, TEST_LOCATION ); + + // form repost decision. + DALI_TEST_CHECK(gFormRepostDecidedInstance); + gFormRepostDecidedInstance->Reply(true); + + // reset + gFormRepostDecidedInstance = nullptr; + + END_TEST; +} + +int UtcDaliWebViewSslCertificateHttpAuthentication(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + 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 ); + + 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 ); + + view.LoadUrl( TEST_URL1 ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gCertificateConfirmCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_EQUALS( gSslCertificateChangedCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_EQUALS( gHttpAuthHandlerCallbackCalled, 1, TEST_LOCATION ); + + // certificate. + DALI_TEST_CHECK(gCertificateConfirmInstance); + gCertificateConfirmInstance->Allow(true); + DALI_TEST_CHECK(gCertificateConfirmInstance->IsFromMainFrame()); + + DALI_TEST_CHECK(gSslCertificateInstance); + DALI_TEST_EQUALS(gSslCertificateInstance->GetPem(), "abc", TEST_LOCATION); + DALI_TEST_CHECK(gSslCertificateInstance->IsContextSecure()); + + // http authentication. + DALI_TEST_CHECK(gHttpAuthInstance); + gHttpAuthInstance->Suspend(); + gHttpAuthInstance->UseCredential("", ""); + gHttpAuthInstance->CancelCredential(); + DALI_TEST_EQUALS(gHttpAuthInstance->GetRealm(), "test", TEST_LOCATION); + + // reset + gCertificateConfirmInstance = nullptr; + gSslCertificateInstance = nullptr; + gHttpAuthInstance = nullptr; + + 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(); + DALI_TEST_CHECK( view ); + + std::string local; + view.SetProperty( WebView::Property::URL, TEST_URL1 ); + Property::Value val = view.GetProperty( WebView::Property::URL ); + DALI_TEST_CHECK( val.Get( local ) ); + DALI_TEST_EQUALS( local, TEST_URL1, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewProperty4(void) +{ + // USER_AGENT + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + 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 the case that favicon is not null. + 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 ); + + // Check the case that favicon is null. + favicon = view.GetFavicon(); + DALI_TEST_CHECK( !favicon ); + + END_TEST; +} + +int UtcDaliWebViewContextMenuShownAndHidden(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + // load url. + 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); + DALI_TEST_CHECK(gContextMenuHiddenInstance == 0); + + view.LoadUrl( TEST_URL1 ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gContextMenuShownCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_EQUALS( gContextMenuHiddenCallbackCalled, 1, TEST_LOCATION ); + + // check context meun & its items. + DALI_TEST_CHECK(gContextMenuShownInstance != 0); + std::unique_ptr item = gContextMenuShownInstance->GetItemAt(0); + DALI_TEST_CHECK(item.get() != 0); + std::vector> itemList = gContextMenuShownInstance->GetItemList(); + DALI_TEST_CHECK(itemList.size() == 1); + DALI_TEST_CHECK(gContextMenuShownInstance->RemoveItem(*(item.get()))); + DALI_TEST_CHECK(gContextMenuShownInstance->AppendItemAsAction(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", false)); + DALI_TEST_CHECK(gContextMenuShownInstance->AppendItem(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", "", false)); + DALI_TEST_CHECK(gContextMenuShownInstance->SelectItem(*(item.get()))); + DALI_TEST_CHECK(gContextMenuShownInstance->Hide()); + + Dali::WebEngineContextMenuItem::ItemTag testItemTag = Dali::WebEngineContextMenuItem::ItemTag::NO_ACTION; + DALI_TEST_EQUALS(item->GetTag(), testItemTag, TEST_LOCATION); + Dali::WebEngineContextMenuItem::ItemType testItemType = Dali::WebEngineContextMenuItem::ItemType::ACTION; + DALI_TEST_EQUALS(item->GetType(), testItemType, TEST_LOCATION); + DALI_TEST_CHECK(item->IsEnabled()); + std::string testLinkUrl("http://test.html"); + DALI_TEST_EQUALS(item->GetLinkUrl(), testLinkUrl, TEST_LOCATION); + std::string testImageUrl("http://test.jpg"); + DALI_TEST_EQUALS(item->GetImageUrl(), testImageUrl, TEST_LOCATION); + std::string testTitle("title"); + DALI_TEST_EQUALS(item->GetTitle(), testTitle, TEST_LOCATION); + DALI_TEST_CHECK(item->GetParentMenu().get() == 0); + + DALI_TEST_CHECK(gContextMenuHiddenInstance != 0); + + gContextMenuShownInstance = nullptr; + gContextMenuHiddenInstance = nullptr; + + END_TEST; +} + +int UtcDaliWebViewScrollBy(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + // load url. + view.RegisterScrollEdgeReachedCallback( &OnScrollEdgeReached ); + 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 ); + + // scroll by and trigger scrollEdgeReached event. + bool result = view.ScrollEdgeBy( 50, 50 ); + DALI_TEST_CHECK( result ); + Test::EmitGlobalTimerSignal(); + + view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output ); + DALI_TEST_CHECK( output.x == 200 && output.y == 200 ); + DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 2, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewSetGetScaleFactorActivateAccessibility(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.ActivateAccessibility(true); + view.AddDynamicCertificatePath("host", "test/to/path"); + bool found = view.HighlightText("test", Dali::WebEnginePlugin::FindOption::CASE_INSENSITIVE, 2); + DALI_TEST_CHECK( found ); + + view.SetScaleFactor(1.5f, Dali::Vector2(0.0f, 0.0f)); + float result = view.GetScaleFactor(); + DALI_TEST_EQUALS( result, 1.5f, TEST_LOCATION ); + + view.SetScaleFactor(1.0f, Dali::Vector2(0.0f, 0.0f)); + result = view.GetScaleFactor(); + DALI_TEST_EQUALS( result, 1.0f, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewGetScreenshotSyncAndAsync(void) +{ + // SCROLL_POSITION + ToolkitTestApplication application; + + char argv[] = "--test"; + WebView view = WebView::New( 1, (char**)&argv ); + DALI_TEST_CHECK( view ); + + // Check GetScreenshot + Dali::Rect viewArea; + viewArea.x = 100; + viewArea.y = 100; + viewArea.width = 10; + viewArea.height = 10; + Dali::Toolkit::ImageView screenshot = view.GetScreenshot(viewArea, 1.0f); + DALI_TEST_CHECK( screenshot ); + Dali::Vector3 shotsize = screenshot.GetProperty< Vector3 >( Dali::Actor::Property::SIZE ); + DALI_TEST_CHECK( ( int )shotsize.width == viewArea.width && ( int )shotsize.height == viewArea.height ); + + // Check GetScreenshotAsynchronously + viewArea.x = 100; + viewArea.y = 100; + viewArea.width = 100; + viewArea.height = 100; + bool result = view.GetScreenshotAsynchronously(viewArea, 1.0f, &OnScreenshotCaptured); + DALI_TEST_CHECK( result ); + + Test::EmitGlobalTimerSignal(); + + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gScreenshotCapturedCallbackCalled, 1, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewVideoPlayingGeolocationPermission(void) +{ + // SCROLL_POSITION + ToolkitTestApplication application; + + char argv[] = "--test"; + WebView view = WebView::New( 1, (char**)&argv ); + DALI_TEST_CHECK( view ); + + // Check CheckVideoPlayingAsynchronously + bool result = view.CheckVideoPlayingAsynchronously(&OnVideoPlaying); + DALI_TEST_CHECK( result ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gVideoPlayingCallbackCalled, 1, TEST_LOCATION ); + + // Check RegisterGeolocationPermissionCallback + view.RegisterGeolocationPermissionCallback(&OnGeolocationPermission); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gGeolocationPermissionCallbackCalled, 1, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewResponsePolicyDecisionRequest(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + // load url. + 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 ); + + // check response policy decision & its frame. + DALI_TEST_CHECK(gResponsePolicyDecisionInstance != 0); + std::string testUrl("http://test.html"); + DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetUrl(), testUrl, TEST_LOCATION); + std::string testCookie("test:abc"); + DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetCookie(), testCookie, TEST_LOCATION); + Dali::WebEnginePolicyDecision::DecisionType testDecisionType = Dali::WebEnginePolicyDecision::DecisionType::USE; + DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetDecisionType(), testDecisionType, TEST_LOCATION); + std::string testResponseMime("txt/xml"); + DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetResponseMime(), testResponseMime, TEST_LOCATION); + int32_t ResponseStatusCode = 500; + DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetResponseStatusCode(), ResponseStatusCode, TEST_LOCATION); + Dali::WebEnginePolicyDecision::NavigationType testNavigationType = Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED; + DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetNavigationType(), testNavigationType, TEST_LOCATION); + std::string testScheme("test"); + DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetScheme(), testScheme, TEST_LOCATION); + DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Use()); + DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Ignore()); + DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Suspend()); + + Dali::WebEngineFrame* webFrame = &(gResponsePolicyDecisionInstance->GetFrame()); + DALI_TEST_CHECK(webFrame); + DALI_TEST_CHECK(webFrame->IsMainFrame()); + + gResponsePolicyDecisionInstance = nullptr; + + END_TEST; +} + +int UtcDaliWebViewHitTest(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + // load url. + view.LoadUrl( TEST_URL1 ); + + // sync hit test. + std::unique_ptr hitTest = view.CreateHitTest(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT); + DALI_TEST_CHECK(hitTest != 0); + DALI_TEST_EQUALS(hitTest->GetResultContext(), Dali::WebEngineHitTest::ResultContext::DOCUMENT, TEST_LOCATION); + std::string testLinkUri("http://test.html"); + DALI_TEST_EQUALS(hitTest->GetLinkUri(), testLinkUri, TEST_LOCATION); + std::string testLinkTitle("test"); + DALI_TEST_EQUALS(hitTest->GetLinkTitle(), testLinkTitle, TEST_LOCATION); + std::string testLinkLabel("label"); + DALI_TEST_EQUALS(hitTest->GetLinkLabel(), testLinkLabel, TEST_LOCATION); + std::string testImageUri("http://test.jpg"); + DALI_TEST_EQUALS(hitTest->GetImageUri(), testImageUri, TEST_LOCATION); + std::string testMediaUri("http://test.mp4"); + DALI_TEST_EQUALS(hitTest->GetMediaUri(), testMediaUri, TEST_LOCATION); + std::string testTagName("img"); + DALI_TEST_EQUALS(hitTest->GetTagName(), testTagName, TEST_LOCATION); + std::string testNodeValue("test"); + DALI_TEST_EQUALS(hitTest->GetNodeValue(), testNodeValue, TEST_LOCATION); + Dali::Property::Map testMap = hitTest->GetAttributes(); + DALI_TEST_EQUALS(testMap.Count(), 0, TEST_LOCATION); + std::string testImageFileNameExtension("jpg"); + DALI_TEST_EQUALS(hitTest->GetImageFileNameExtension(), testImageFileNameExtension, TEST_LOCATION); + Dali::PixelData testImageBuffer = hitTest->GetImageBuffer(); + DALI_TEST_CHECK((int)testImageBuffer.GetWidth() == 2 && (int)testImageBuffer.GetHeight() == 2); + + // async... + bool result = view.CreateHitTestAsynchronously(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT, &OnHitTestCreated); + DALI_TEST_CHECK(result); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gHitTestCreatedCallbackCalled, 1, TEST_LOCATION ); + + 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 UtcDaliWebViewLoadHtmlStringOverrideCurrentEntryAndContents(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New( "ko-KR", "Asia/Seoul" ); + DALI_TEST_CHECK( view ); + + std::string html("Hello World!"); + std::string basicUri("http://basicurl"); + std::string unreachableUrl("http://unreachableurl"); + bool result = view.LoadHtmlStringOverrideCurrentEntry( html, basicUri, unreachableUrl ); + DALI_TEST_CHECK( result ); + + application.SendNotification(); + application.Render(); + Test::EmitGlobalTimerSignal(); + + result = view.LoadContents( html, html.length(), "html/text", "utf-8", basicUri ); + DALI_TEST_CHECK( result ); + + END_TEST; +} + +int UtcDaliWebViewReloadSuspendResumeNetworkLoadingCustomHeader(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + 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 ); + + view.LoadUrl( "http://test.html" ); + bool result = view.AddCustomHeader("key", "value"); + DALI_TEST_CHECK( result ); + + result = view.ReloadWithoutCache(); + DALI_TEST_CHECK( result ); + + uint32_t portNumber = view.StartInspectorServer(5000); + DALI_TEST_EQUALS( portNumber, 5000, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + Test::EmitGlobalTimerSignal(); + + result = view.StopInspectorServer(); + DALI_TEST_CHECK( result ); + + view.SuspendNetworkLoading(); + + result = view.RemoveCustomHeader("key"); + DALI_TEST_CHECK( result ); + + view.ResumeNetworkLoading(); + + 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 ) { + } + ); + view.SetTtsFocus(true); + + 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 ) + + std::unique_ptr citem = bfList->GetCurrentItem(); + DALI_TEST_CHECK( citem != 0 ); + + std::unique_ptr citemP = bfList->GetPreviousItem(); + DALI_TEST_CHECK( citemP != 0 ); + + std::unique_ptr citemN = bfList->GetNextItem(); + DALI_TEST_CHECK( citemN != 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 ); + + std::unique_ptr item = bfList->GetItemAtIndex( 0 ); + DALI_TEST_CHECK( item != 0 ); + + std::vector> vecBack = bfList->GetBackwardItems(-1); + DALI_TEST_CHECK( vecBack.size() == 1 ); + + std::vector> vecForward = bfList->GetForwardItems(-1); + DALI_TEST_CHECK( vecForward.size() == 1 ); + + 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->SetAppId( "id" ); + context->SetApplicationType( Dali::WebEngineContext::ApplicationType::OTHER ); + context->SetTimeOffset( 0 ); + context->SetTimeZoneOffset( 0, 0 ); + context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue ); + context->DeleteAllWebDatabase(); + context->DeleteAllWebStorage(); + context->DeleteLocalFileSystem(); + context->ClearCache(); + context->DeleteAllFormPasswordData(); + context->DeleteAllFormCandidateData(); + + // 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 ); + + // Get cache enabled + context->EnableCache( true ); + DALI_TEST_CHECK( context->IsCacheEnabled() ); + + // Get certificate + context->SetCertificateFilePath( "test" ); + std::string str = context->GetCertificateFilePath(); + DALI_TEST_EQUALS( str, "test", TEST_LOCATION ); + + // Set version + DALI_TEST_CHECK( context->SetAppVersion( "test" ) ); + + // Register + std::vector temp; + context->RegisterUrlSchemesAsCorsEnabled( temp ); + context->RegisterJsPluginMimeTypes( temp ); + context->DeleteFormPasswordDataList( temp ); + + // Get zoom factor + context->SetDefaultZoomFactor( 1.0f ); + DALI_TEST_EQUALS( context->GetDefaultZoomFactor(), float( 1.0f ), TEST_LOCATION ); + + // Delete cache and database + DALI_TEST_CHECK( context->DeleteAllApplicationCache() ); + DALI_TEST_CHECK( context->DeleteAllWebIndexedDatabase() ); + + // Get contextProxy + context->SetProxyUri( "test" ); + DALI_TEST_EQUALS( context->GetProxyUri(), "test", TEST_LOCATION ); + context->SetProxyBypassRule("", "test"); + DALI_TEST_EQUALS( context->GetProxyBypassRule(), "test", TEST_LOCATION ); + + //Notify low memory + DALI_TEST_CHECK( context->FreeUnusedMemory() ); + + END_TEST; +} + +int UtcDaliWebContextGetWebDatabaseStorageOrigins(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; + + // get origins of web database + bool result = context->GetWebDatabaseOrigins(&OnSecurityOriginsAcquired); + DALI_TEST_CHECK( result ); + + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_CHECK(gSecurityOriginList.size() == 1); + + Dali::WebEngineSecurityOrigin* origin = gSecurityOriginList[0].get(); + DALI_TEST_CHECK( origin ); + + result = context->DeleteWebDatabase(*origin); + DALI_TEST_CHECK( result ); + + // get origins of web storage + result = context->GetWebStorageOrigins(&OnSecurityOriginsAcquired); + DALI_TEST_CHECK( result ); + + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 2, TEST_LOCATION ); + DALI_TEST_CHECK(gSecurityOriginList.size() == 1); + + origin = gSecurityOriginList[0].get(); + DALI_TEST_CHECK( origin ); + + result = context->GetWebStorageUsageForOrigin(*origin, &OnStorageUsageAcquired); + DALI_TEST_CHECK( result ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gStorageUsageAcquiredCallbackCalled, 1, TEST_LOCATION ); + + result = context->DeleteWebStorage(*origin); + DALI_TEST_CHECK( result ); + + result = context->DeleteApplicationCache(*origin); + DALI_TEST_CHECK( result ); + + // form passwords, download state, mime type. + context->GetFormPasswordList(&OnFormPasswordsAcquired); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS(gFormPasswordsAcquiredCallbackCalled, 1, TEST_LOCATION); + DALI_TEST_CHECK(gPasswordDataList.size() == 1); + DALI_TEST_EQUALS(gPasswordDataList[0]->url, "http://test.html", TEST_LOCATION); + DALI_TEST_CHECK(gPasswordDataList[0]->useFingerprint == false); + + context->RegisterDownloadStartedCallback(&OnDownloadStarted); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS(gDownloadStartedCallbackCalled, 1, TEST_LOCATION); + + context->RegisterMimeOverriddenCallback(&OnMimeOverridden); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS(gMimeOverriddenCallbackCalled, 1, TEST_LOCATION); + + gSecurityOriginList.clear(); + gPasswordDataList.clear(); + + END_TEST; +} + +int UtcDaliWebContextHttpRequestInterceptor(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebContext* context = view.GetContext(); + DALI_TEST_CHECK( context != 0 ) + + // load url. + context->RegisterRequestInterceptedCallback(&OnRequestIntercepted); + DALI_TEST_EQUALS(gRequestInterceptedCallbackCalled, 0, TEST_LOCATION); + DALI_TEST_CHECK(gRequestInterceptorInstance == 0); + + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gRequestInterceptedCallbackCalled, 1, TEST_LOCATION ); + + // check request interceptor. + DALI_TEST_CHECK(gRequestInterceptorInstance != 0); + DALI_TEST_CHECK(gRequestInterceptorInstance->Ignore()); + DALI_TEST_CHECK(gRequestInterceptorInstance->SetResponseStatus(400, "error")); + DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseHeader("key1", "value1")); + Dali::Property::Map testHeaders; + testHeaders.Insert("key2", "value2"); + DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseHeaders(testHeaders)); + DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseBody("test", 4)); + DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponse("key:value", "test", 4)); + DALI_TEST_CHECK(gRequestInterceptorInstance->WriteResponseChunk("test", 4)); + std::string testUrl("http://test.html"); + DALI_TEST_EQUALS(gRequestInterceptorInstance->GetUrl(), testUrl, TEST_LOCATION); + std::string testMethod("GET"); + DALI_TEST_EQUALS(gRequestInterceptorInstance->GetMethod(), testMethod, TEST_LOCATION); + Dali::Property::Map resultHeaders = gRequestInterceptorInstance->GetHeaders(); + DALI_TEST_EQUALS(resultHeaders.Count(), 2, TEST_LOCATION); + + gRequestInterceptorInstance = nullptr; + + 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; +} + +int UtcDaliWebCookieManagerChangesWatch(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager(); + DALI_TEST_CHECK( cookieManager != 0 ) + + cookieManager->ChangesWatch(&OnChangesWatch); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gCookieManagerChangsWatchCallbackCalled, 1, TEST_LOCATION ); + + 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; +} + +int UtcDaliWebSettingsSetViewportMetaTag(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Check the value is true or not + bool value = settings->SetViewportMetaTag(true); + DALI_TEST_CHECK( value ); + + END_TEST; +} + +int UtcDaliWebSettingsSetForceZoom(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Check the value is true or not + bool value = settings->SetForceZoom(true); + DALI_TEST_CHECK( value ); + + value = settings->IsZoomForced(); + DALI_TEST_CHECK( value ); + + END_TEST; +} + +int UtcDaliWebSettingsSetTextZoomEnabled(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Check the value is true or not + bool value = settings->SetTextZoomEnabled(true); + DALI_TEST_CHECK( value ); + + value = settings->IsTextZoomEnabled(); + DALI_TEST_CHECK( value ); + + END_TEST; +} + +int UtcDaliWebSettingsSetExtraFeature(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + Dali::Toolkit::WebSettings* settings = view.GetSettings(); + DALI_TEST_CHECK( settings != 0 ) + + // Check the value is true or not + settings->SetExtraFeature("test", true); + bool value = settings->IsExtraFeatureEnabled("test"); + DALI_TEST_CHECK( value ); + + END_TEST; +} + +int UtcDaliWebViewGetPlainText(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK(view); + + view.LoadUrl(TEST_URL1); + + view.GetPlainTextAsynchronously(&OnPlainTextReceived); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS(gPlainTextReceivedCallbackCalled, 1, TEST_LOCATION); + + END_TEST; +} +