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=a97eb79113040133cd8bc1b770cecdb1b584b937;hp=36a058d6efad741c36bdab04445abdf1ae6d691b;hb=d65464c74cd9fbe9fde413f442070bffe70ba99c;hpb=fd25921c0f007bcedae97c5c130529f6646ee647 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp index 36a058d..a97eb79 100755 --- a/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-WebView.cpp @@ -22,6 +22,7 @@ #include "dali-toolkit-test-utils/toolkit-timer.h" #include +#include #include #include #include @@ -33,6 +34,7 @@ #include #include #include +#include #include #include @@ -54,9 +56,17 @@ 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 gFormRepostDecisionCallbackCalled = 0; +static std::shared_ptr gFormRepostDecisionInstance; +static int gFrameRenderedCallbackCalled = 0; +static int gRequestInterceptorCallbackCalled = 0; +static std::shared_ptr gRequestInterceptorInstance = nullptr; struct CallbackFunctor { @@ -124,6 +134,22 @@ static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& 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; @@ -142,6 +168,23 @@ static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel ) return true; } +static void OnFormRepostDecision(WebView, std::shared_ptr decision) +{ + gFormRepostDecisionCallbackCalled++; + gFormRepostDecisionInstance = decision; +} + +static void OnFrameRendered(WebView) +{ + gFrameRenderedCallbackCalled++; +} + +static void OnRequestInterceptor(WebView view, std::shared_ptr interceptor) +{ + gRequestInterceptorCallbackCalled++; + gRequestInterceptorInstance = std::move(interceptor); +} + } // namespace void web_view_startup(void) @@ -350,6 +393,82 @@ int UtcDaliWebViewFocusGainedAndLost(void) END_TEST; } +int UtcDaliWebViewPropertyPageZoomFactor(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 )); + view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) ); + + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); + + view.SetProperty( 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::PAGE_ZOOM_FACTOR, 1.0f); + zoomFactor = view.GetProperty( WebView::Property::PAGE_ZOOM_FACTOR ); + DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewPropertyTextZoomFactor(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 )); + view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) ); + + application.GetScene().Add( view ); + application.SendNotification(); + application.Render(); + + view.SetProperty( 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::TEXT_ZOOM_FACTOR, 1.0f); + zoomFactor = view.GetProperty( WebView::Property::TEXT_ZOOM_FACTOR ); + DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliWebViewPropertyLoadProgressPercentage(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(); + + float percentage = view.GetProperty( WebView::Property::LOAD_PROGRESS_PERCENTAGE ); + DALI_TEST_EQUALS( percentage, 0.5f, TEST_LOCATION ); + + END_TEST; +} + int UtcDaliWebViewMove(void) { ToolkitTestApplication application; @@ -504,6 +623,46 @@ int UtcDaliWebViewHoverAndWheel(void) END_TEST; } +int UtcDaliWebViewFormRepostDecisionFrameRendering(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.FormRepostDecisionSignal().Connect(&OnFormRepostDecision); + view.FrameRenderedSignal().Connect(&OnFrameRendered); + bool signal1 = false; + bool signal2 = false; + view.ConnectSignal( testTracker, "formRepostDecision", CallbackFunctor(&signal1) ); + view.ConnectSignal( testTracker, "frameRendered", CallbackFunctor(&signal2) ); + DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 0, TEST_LOCATION ); + DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 0, TEST_LOCATION ); + + view.LoadUrl( TEST_URL1 ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_CHECK( signal1 & signal2); + + // form repost decision. + DALI_TEST_CHECK(gFormRepostDecisionInstance); + gFormRepostDecisionInstance->Reply(true); + + // reset + gFormRepostDecisionInstance = nullptr; + + END_TEST; +} + int UtcDaliWebViewGetWebBackForwardList(void) { ToolkitTestApplication application; @@ -712,6 +871,141 @@ int UtcDaliWebViewScrollBy(void) DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION ); DALI_TEST_CHECK( signal1 ); + // 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 ); + DALI_TEST_CHECK( signal1 ); + + 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 UtcDaliWebViewHttpRequestInterceptor(void) +{ + ToolkitTestApplication application; + + WebView view = WebView::New(); + DALI_TEST_CHECK( view ); + + // load url. + ConnectionTracker* testTracker = new ConnectionTracker(); + view.RequestInterceptorSignal().Connect( &OnRequestInterceptor ); + bool signal1 = false; + view.ConnectSignal( testTracker, "requestInterceptor", CallbackFunctor(&signal1) ); + DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 0, TEST_LOCATION ); + DALI_TEST_CHECK(gRequestInterceptorInstance == 0); + + view.LoadUrl( TEST_URL1 ); + Test::EmitGlobalTimerSignal(); + DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 1, TEST_LOCATION ); + DALI_TEST_CHECK( signal1 ); + + // check request interceptor. + DALI_TEST_CHECK(gRequestInterceptorInstance != 0); + DALI_TEST_CHECK(gRequestInterceptorInstance->Ignore()); + DALI_TEST_CHECK(gRequestInterceptorInstance->SetResponseStatus(400, "error")); + DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseHeader("key", "value")); + DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseBody("test", 4)); + std::string testUrl("http://test.html"); + DALI_TEST_EQUALS(gRequestInterceptorInstance->GetUrl(), testUrl, TEST_LOCATION); + + gRequestInterceptorInstance = nullptr; + END_TEST; } @@ -758,6 +1052,71 @@ int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void) 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;