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=4fbe8c18c6b26ed02425ae1ef38757fe2c1af334;hp=a97eb79113040133cd8bc1b770cecdb1b584b937;hb=0e45ebf0c1d7baf6a81c94356aae6d6dbca227b7;hpb=4ac6c8f30c89b605f18ad7dd3e0e5a1f13b1d416 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp index a97eb79..4fbe8c1 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp @@ -22,7 +22,19 @@ #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 @@ -31,10 +43,8 @@ #include #include #include -#include #include #include -#include #include #include @@ -50,6 +60,8 @@ 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::shared_ptr gPageLoadErrorInstance = nullptr; static int gScrollEdgeReachedCallbackCalled = 0; static int gUrlChangedCallbackCalled = 0; static int gEvaluateJavaScriptCallbackCalled = 0; @@ -63,10 +75,33 @@ static bool gTouched = false; static bool gHovered = false; static bool gWheelEventHandled = false; static int gFormRepostDecisionCallbackCalled = 0; -static std::shared_ptr gFormRepostDecisionInstance; +static std::shared_ptr gFormRepostDecisionInstance = nullptr; static int gFrameRenderedCallbackCalled = 0; static int gRequestInterceptorCallbackCalled = 0; static std::shared_ptr gRequestInterceptorInstance = nullptr; +static int gConsoleMessageCallbackCalled = 0; +static std::shared_ptr gConsoleMessageInstance = nullptr; +static int gResponsePolicyDecidedCallbackCalled = 0; +static std::shared_ptr gResponsePolicyDecisionInstance = nullptr; +static int gCertificateConfirmCallbackCalled = 0; +static std::shared_ptr gCertificateConfirmInstance = nullptr; +static int gSslCertificateChangedCallbackCalled = 0; +static std::shared_ptr gSslCertificateInstance = nullptr; +static int gHttpAuthHandlerCallbackCalled = 0; +static std::shared_ptr gHttpAuthInstance = nullptr; +static int gSecurityOriginsAcquiredCallbackCalled = 0; +static int gStorageUsageAcquiredCallbackCalled = 0; +static int gFormPasswordsAcquiredCallbackCalled = 0; +static int gDownloadStartedCallbackCalled = 0; +static int gMimeOverriddenCallbackCalled = 0; +static std::vector> gSecurityOriginList; +static std::vector> gPasswordDataList; +static int gContextMenuCustomizedCallbackCalled = 0; +static std::shared_ptr gContextMenuInstance = nullptr; +static int gContextMenuItemSelectedCallbackCalled = 0; +static std::shared_ptr gContextMenuItemInstance = nullptr; +static int gHitTestCreatedCallbackCalled = 0; +static int gCookieManagerChangsWatchCallbackCalled = 0; struct CallbackFunctor { @@ -102,13 +137,27 @@ static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge gScrollEdgeReachedCallbackCalled++; } +static void OnResponsePolicyDecided(WebView view, std::shared_ptr decision) +{ + gResponsePolicyDecidedCallbackCalled++; + gResponsePolicyDecisionInstance = std::move(decision); +} + static void OnUrlChanged( WebView view, const std::string& url ) { gUrlChangedCallbackCalled++; } -static void OnPageLoadError( WebView view, const std::string& url, WebView::LoadErrorCode errorCode ) +static bool OnHitTestCreated(std::unique_ptr test) { + gHitTestCreatedCallbackCalled++; + return true; +} + +static void OnPageLoadError(WebView view, std::shared_ptr error) +{ + gPageLoadErrorCallbackCalled++; + gPageLoadErrorInstance = std::move(error); } static void OnEvaluateJavaScript( const std::string& result ) @@ -136,7 +185,7 @@ static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& static void OnScreenshotCaptured(Dali::Toolkit::ImageView) { - gScreenshotCapturedCallbackCalled++; + gScreenshotCapturedCallbackCalled++; } static void OnVideoPlaying(bool isPlaying) @@ -156,6 +205,11 @@ static bool OnTouched( Actor actor, const Dali::TouchEvent& touch ) return true; } +static void OnChangesWatch() +{ + gCookieManagerChangsWatchCallbackCalled++; +} + static bool OnHovered( Actor actor, const Dali::HoverEvent& hover ) { gHovered = true; @@ -168,10 +222,10 @@ static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel ) return true; } -static void OnFormRepostDecision(WebView, std::shared_ptr decision) +static void OnFormRepostDecision(WebView, std::shared_ptr decision) { gFormRepostDecisionCallbackCalled++; - gFormRepostDecisionInstance = decision; + gFormRepostDecisionInstance = std::move(decision); } static void OnFrameRendered(WebView) @@ -185,6 +239,72 @@ static void OnRequestInterceptor(WebView view, std::shared_ptr message) +{ + gConsoleMessageCallbackCalled++; + gConsoleMessageInstance = std::move(message); +} + +static void OnCertificateConfirm(WebView view, std::shared_ptr certificate ) +{ + gCertificateConfirmCallbackCalled++; + gCertificateConfirmInstance = std::move(certificate); +} + +static void OnSslCertificateChanged(WebView view, std::shared_ptr certificate ) +{ + gSslCertificateChangedCallbackCalled++; + gSslCertificateInstance = std::move(certificate); +} + +static void OnHttpAuthHandler( WebView view, std::shared_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 void OnContextMenuCustomized(WebView view, std::shared_ptr menu) +{ + gContextMenuCustomizedCallbackCalled++; + gContextMenuInstance = std::move(menu); +} + +static void OnContextMenuItemSelected(WebView view, std::shared_ptr item) +{ + gContextMenuItemSelectedCallbackCalled++; + gContextMenuItemInstance = std::move(item); +} + } // namespace void web_view_startup(void) @@ -215,7 +335,6 @@ int UtcDaliWebViewBasics(void) assign = copy; DALI_TEST_CHECK( assign == view ); - // DownCast Test tet_infoline( "UtcDaliWebViewBasic DownCast Test" ); BaseHandle handle(view); @@ -225,7 +344,6 @@ int UtcDaliWebViewBasics(void) DALI_TEST_CHECK( view2 ); DALI_TEST_CHECK( view == view2 ); - // TypeRegistry Test tet_infoline( "UtcDaliWebViewBasic TypeRegistry Test" ); TypeRegistry typeRegistry = TypeRegistry::Get(); @@ -261,7 +379,6 @@ int UtcDaliWebViewPageNavigation(void) 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; @@ -323,6 +440,60 @@ 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 ); + + ConnectionTracker* testTracker = new ConnectionTracker(); + view.PageLoadErrorSignal().Connect( &OnPageLoadError ); + view.ConsoleMessageSignal().Connect( &OnConsoleMessage ); + bool signal1 = false; + bool signal2 = false; + view.ConnectSignal( testTracker, "pageLoadError", CallbackFunctor(&signal1) ); + view.ConnectSignal( testTracker, "consoleMessage", CallbackFunctor(&signal2) ); + 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 ); + DALI_TEST_CHECK( signal1 & signal2); + + // 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; @@ -663,6 +834,65 @@ int UtcDaliWebViewFormRepostDecisionFrameRendering(void) 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 ); + + ConnectionTracker* testTracker = new ConnectionTracker(); + view.CertificateConfirmSignal().Connect(&OnCertificateConfirm); + view.SslCertificateChangedSignal().Connect(&OnSslCertificateChanged); + view.HttpAuthHandlerSignal().Connect(&OnHttpAuthHandler); + bool signal1 = false; + bool signal2 = false; + bool signal3 = false; + view.ConnectSignal( testTracker, "certificateConfirm", CallbackFunctor(&signal1) ); + view.ConnectSignal( testTracker, "sslCertificateChanged", CallbackFunctor(&signal2) ); + view.ConnectSignal( testTracker, "httpAuthRequest", CallbackFunctor(&signal3) ); + 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 ); + DALI_TEST_CHECK( signal1 & signal2 & signal3); + + // 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; @@ -829,12 +1059,77 @@ int UtcDaliWebViewPropertyTitleFavicon(void) 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(); + // 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::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 UtcDaliWebViewContextMenuCustomizedAndItemSelected(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + // load url. + ConnectionTracker* testTracker = new ConnectionTracker(); + view.ContextMenuCustomizedSignal().Connect( &OnContextMenuCustomized ); + view.ContextMenuItemSelectedSignal().Connect( &OnContextMenuItemSelected ); + bool signal1 = false; + bool signal2 = false; + view.ConnectSignal( testTracker, "contextMenuCustomized", CallbackFunctor(&signal1) ); + view.ConnectSignal( testTracker, "contextMenuItemSelected", CallbackFunctor(&signal2) ); + DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 0, TEST_LOCATION ); + DALI_TEST_CHECK(gContextMenuInstance == 0); + DALI_TEST_CHECK(gContextMenuItemInstance == 0); + + view.LoadUrl( TEST_URL1 ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_CHECK( signal1 ); + DALI_TEST_CHECK( signal2 ); + + // check context meun & its items. + DALI_TEST_CHECK(gContextMenuInstance != 0); + std::unique_ptr item = gContextMenuInstance->GetItemAt(0); + DALI_TEST_CHECK(item.get() != 0); + std::vector> itemList = gContextMenuInstance->GetItemList(); + DALI_TEST_CHECK(itemList.size() == 1); + Dali::Vector2 testPosition = Dali::Vector2(100, 100); + DALI_TEST_EQUALS(gContextMenuInstance->GetPosition(), testPosition, TEST_LOCATION); + DALI_TEST_CHECK(gContextMenuInstance->RemoveItem(*(item.get()))); + DALI_TEST_CHECK(gContextMenuInstance->AppendItemAsAction(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", false)); + DALI_TEST_CHECK(gContextMenuInstance->AppendItem(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", "", false)); + DALI_TEST_CHECK(gContextMenuInstance->SelectItem(*(item.get()))); + DALI_TEST_CHECK(gContextMenuInstance->Hide()); + + DALI_TEST_CHECK(gContextMenuItemInstance != 0); + Dali::WebEngineContextMenuItem::ItemTag testItemTag = Dali::WebEngineContextMenuItem::ItemTag::NO_ACTION; + DALI_TEST_EQUALS(gContextMenuItemInstance->GetTag(), testItemTag, TEST_LOCATION); + Dali::WebEngineContextMenuItem::ItemType testItemType = Dali::WebEngineContextMenuItem::ItemType::ACTION; + DALI_TEST_EQUALS(gContextMenuItemInstance->GetType(), testItemType, TEST_LOCATION); + DALI_TEST_CHECK(gContextMenuItemInstance->IsEnabled()); + std::string testLinkUrl("http://test.html"); + DALI_TEST_EQUALS(gContextMenuItemInstance->GetLinkUrl(), testLinkUrl, TEST_LOCATION); + std::string testImageUrl("http://test.jpg"); + DALI_TEST_EQUALS(gContextMenuItemInstance->GetImageUrl(), testImageUrl, TEST_LOCATION); + std::string testTitle("title"); + DALI_TEST_EQUALS(gContextMenuItemInstance->GetTitle(), testTitle, TEST_LOCATION); + DALI_TEST_CHECK(gContextMenuItemInstance->GetParentMenu().get() == 0); + + gContextMenuInstance = nullptr; + gContextMenuItemInstance = nullptr; + END_TEST; } @@ -1009,6 +1304,99 @@ int UtcDaliWebViewHttpRequestInterceptor(void) END_TEST; } +int UtcDaliWebViewResponsePolicyDecisionRequest(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + // load url. + ConnectionTracker* testTracker = new ConnectionTracker(); + view.ResponsePolicyDecisionSignal().Connect( &OnResponsePolicyDecided ); + bool signal1 = false; + view.ConnectSignal( testTracker, "responsePolicyDecided", CallbackFunctor(&signal1) ); + DALI_TEST_EQUALS( gResponsePolicyDecidedCallbackCalled, 0, TEST_LOCATION ); + DALI_TEST_CHECK(gResponsePolicyDecisionInstance == 0); + + view.LoadUrl( TEST_URL1 ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gResponsePolicyDecidedCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_CHECK( signal1 ); + + // check response policy decision & its frame. + DALI_TEST_CHECK(gResponsePolicyDecisionInstance != 0); + 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_CHECK(testMap); + 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; @@ -1149,9 +1537,15 @@ int UtcDaliWebBackForwardListCheckItem(void) unsigned int itemCount = bfList->GetItemCount(); DALI_TEST_CHECK( itemCount == 1 ) - Dali::Toolkit::WebBackForwardListItem* citem = bfList->GetCurrentItem(); + 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 ); @@ -1164,9 +1558,15 @@ int UtcDaliWebBackForwardListCheckItem(void) testValue = citem->GetOriginalUrl(); DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION ); - Dali::Toolkit::WebBackForwardListItem* item = bfList->GetItemAtIndex( 0 ); + 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; } @@ -1187,12 +1587,19 @@ int UtcDaliWebContextGetSetCacheModel(void) // Reset something context->SetProxyUri( kDefaultValue ); context->SetCertificateFilePath( kDefaultValue ); - context->DisableCache( false ); + context->EnableCache( true ); context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue ); - context->DeleteWebDatabase(); - context->DeleteWebStorage(); + context->DeleteAllWebDatabase(); + context->DeleteAllWebStorage(); context->DeleteLocalFileSystem(); context->ClearCache(); + context->SetContextAppId( "id" ); + context->SetContextApplicationType( Dali::WebEngineContext::ApplicationType::OTHER ); + context->SetContextTimeOffset( 0 ); + context->SetContextTimeZoneOffset( 0, 0 ); + context->SetDefaultZoomFactor( 0 ); + context->DeleteAllFormPasswordData(); + context->DeleteAllFormCandidateData(); // Check default value Dali::WebEngineContext::CacheModel value = context->GetCacheModel(); @@ -1203,6 +1610,107 @@ int UtcDaliWebContextGetSetCacheModel(void) value = context->GetCacheModel(); DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER ); + // Get cache enabled + DALI_TEST_CHECK( context->IsCacheEnabled() ); + + // Get certificate + std::string str = context->GetContextCertificateFile(); + DALI_TEST_EQUALS( str, "test", TEST_LOCATION ); + + // Set version + DALI_TEST_CHECK( context->SetContextAppVersion( "test" ) ); + + // Register + std::vector temp; + context->RegisterUrlSchemesAsCorsEnabled( temp ); + context->RegisterJsPluginMimeTypes( temp ); + context->DeleteFormPasswordDataList( temp ); + + // Get zoom + DALI_TEST_EQUALS( context->GetContextDefaultZoomFactor(), float( 0 ), TEST_LOCATION ); + + // Delete cache and database + DALI_TEST_CHECK( context->DeleteAllApplicationCache() ); + DALI_TEST_CHECK( context->DeleteAllWebIndexedDatabase() ); + + // Get contextProxy + context->SetContextProxy("", ""); + DALI_TEST_EQUALS( context->GetContextProxy(), "test", TEST_LOCATION ); + 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; } @@ -1236,6 +1744,23 @@ int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void) 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) @@ -1747,3 +2272,78 @@ int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void) 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; +} +