2 * Copyright (c) 2020 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <dali-toolkit-test-suite-utils.h>
22 #include "dali-toolkit-test-utils/toolkit-timer.h"
25 #include <dali/integration-api/events/hover-event-integ.h>
26 #include <dali/integration-api/events/key-event-integ.h>
27 #include <dali/integration-api/events/touch-event-integ.h>
28 #include <dali/integration-api/events/wheel-event-integ.h>
29 #include <dali/public-api/images/pixel-data.h>
30 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
31 #include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
32 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list.h>
33 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list-item.h>
34 #include <dali-toolkit/devel-api/controls/web-view/web-context.h>
35 #include <dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h>
36 #include <dali-toolkit/devel-api/controls/web-view/web-settings.h>
37 #include <dali-toolkit/devel-api/controls/web-view/web-view.h>
40 using namespace Toolkit;
45 const char* const TEST_URL1( "http://www.somewhere.valid1.com" );
46 const char* const TEST_URL2( "http://www.somewhere.valid2.com" );
48 static int gPageLoadStartedCallbackCalled = 0;
49 static int gPageLoadInProgressCallbackCalled = 0;
50 static int gPageLoadFinishedCallbackCalled = 0;
51 static int gScrollEdgeReachedCallbackCalled = 0;
52 static int gUrlChangedCallbackCalled = 0;
53 static int gEvaluateJavaScriptCallbackCalled = 0;
54 static int gJavaScriptAlertCallbackCalled = 0;
55 static int gJavaScriptConfirmCallbackCalled = 0;
56 static int gJavaScriptPromptCallbackCalled = 0;
57 static bool gTouched = false;
58 static bool gHovered = false;
59 static bool gWheelEventHandled = false;
61 struct CallbackFunctor
63 CallbackFunctor(bool* callbackFlag)
64 : mCallbackFlag( callbackFlag )
70 *mCallbackFlag = true;
75 static void OnPageLoadStarted( WebView view, const std::string& url )
77 gPageLoadStartedCallbackCalled++;
80 static void OnPageLoadInProgress( WebView view, const std::string& url )
82 gPageLoadInProgressCallbackCalled++;
85 static void OnPageLoadFinished( WebView view, const std::string& url )
87 gPageLoadFinishedCallbackCalled++;
90 static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge edge )
92 gScrollEdgeReachedCallbackCalled++;
95 static void OnUrlChanged( WebView view, const std::string& url )
97 gUrlChangedCallbackCalled++;
100 static void OnPageLoadError( WebView view, const std::string& url, WebView::LoadErrorCode errorCode )
104 static void OnEvaluateJavaScript( const std::string& result )
106 gEvaluateJavaScriptCallbackCalled++;
109 static bool OnJavaScriptAlert( const std::string& result )
111 gJavaScriptAlertCallbackCalled++;
115 static bool OnJavaScriptConfirm( const std::string& result )
117 gJavaScriptConfirmCallbackCalled++;
121 static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& message2 )
123 gJavaScriptPromptCallbackCalled++;
127 static bool OnTouched( Actor actor, const Dali::TouchEvent& touch )
133 static bool OnHovered( Actor actor, const Dali::HoverEvent& hover )
139 static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel )
141 gWheelEventHandled = true;
147 void web_view_startup(void)
149 test_return_value = TET_UNDEF;
152 void web_view_cleanup(void)
154 test_return_value = TET_PASS;
157 int UtcDaliWebViewBasics(void)
159 ToolkitTestApplication application;
161 // Copy and Assignment Test
162 tet_infoline( "UtcDaliWebViewBasic Copy and Assignment Test" );
163 WebView view = WebView::New();
164 DALI_TEST_CHECK( view );
166 WebView copy( view );
167 DALI_TEST_CHECK( view == copy );
170 DALI_TEST_CHECK( !assign );
173 DALI_TEST_CHECK( assign == view );
177 tet_infoline( "UtcDaliWebViewBasic DownCast Test" );
178 BaseHandle handle(view);
180 WebView view2 = WebView::DownCast( handle );
181 DALI_TEST_CHECK( view );
182 DALI_TEST_CHECK( view2 );
183 DALI_TEST_CHECK( view == view2 );
187 tet_infoline( "UtcDaliWebViewBasic TypeRegistry Test" );
188 TypeRegistry typeRegistry = TypeRegistry::Get();
189 DALI_TEST_CHECK( typeRegistry );
191 TypeInfo typeInfo = typeRegistry.GetTypeInfo( "WebView" );
192 DALI_TEST_CHECK( typeInfo );
194 BaseHandle handle2 = typeInfo.CreateInstance();
195 DALI_TEST_CHECK( handle2 );
197 WebView view3 = WebView::DownCast( handle2 );
198 DALI_TEST_CHECK( view3 );
203 int UtcDaliWebViewPageNavigation(void)
205 ToolkitTestApplication application;
207 WebView view = WebView::New();
208 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
209 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
210 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
211 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
212 application.GetScene().Add( view );
213 application.SendNotification();
214 application.Render();
215 DALI_TEST_CHECK( view );
217 ConnectionTracker* testTracker = new ConnectionTracker();
218 view.PageLoadStartedSignal().Connect( &OnPageLoadStarted );
219 view.PageLoadInProgressSignal().Connect( &OnPageLoadInProgress );
220 view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished );
221 view.PageLoadErrorSignal().Connect( &OnPageLoadError );
222 view.UrlChangedSignal().Connect( &OnUrlChanged );
223 bool signal1 = false;
224 bool signal2 = false;
225 bool signal3 = false;
226 bool signal4 = false;
227 bool signal5 = false;
228 view.ConnectSignal( testTracker, "pageLoadStarted", CallbackFunctor(&signal1) );
229 view.ConnectSignal( testTracker, "pageLoadInProgress", CallbackFunctor(&signal2) );
230 view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal3) );
231 view.ConnectSignal( testTracker, "urlChanged", CallbackFunctor(&signal4) );
232 view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal5) );
233 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 0, TEST_LOCATION );
234 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 0, TEST_LOCATION );
235 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 0, TEST_LOCATION );
236 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 0, TEST_LOCATION );
238 view.LoadUrl( TEST_URL1 );
239 view.GetNaturalSize();
240 Test::EmitGlobalTimerSignal();
241 DALI_TEST_EQUALS( view.CanGoBack(), false, TEST_LOCATION );
242 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 1, TEST_LOCATION );
243 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 1, TEST_LOCATION );
244 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 1, TEST_LOCATION );
245 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 1, TEST_LOCATION );
246 DALI_TEST_CHECK( signal1 & signal2 & signal3 & signal4 );
247 DALI_TEST_CHECK( !signal5 );
249 view.LoadUrl( TEST_URL2 );
251 view.SetProperty( Actor::Property::SIZE, Vector2( 400, 300 ) );
252 application.SendNotification();
253 application.Render();
254 Test::EmitGlobalTimerSignal();
256 DALI_TEST_EQUALS( view.CanGoBack(), true, TEST_LOCATION );
257 DALI_TEST_EQUALS( view.CanGoForward(), false, TEST_LOCATION );
258 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 2, TEST_LOCATION );
259 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 2, TEST_LOCATION );
260 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 2, TEST_LOCATION );
261 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 2, TEST_LOCATION );
264 Test::EmitGlobalTimerSignal();
265 DALI_TEST_CHECK( !view.CanGoBack() );
266 DALI_TEST_CHECK( view.CanGoForward() );
269 Test::EmitGlobalTimerSignal();
270 DALI_TEST_CHECK( view.CanGoBack() );
271 DALI_TEST_CHECK( !view.CanGoForward() );
276 Test::EmitGlobalTimerSignal();
277 DALI_TEST_CHECK( !view.CanGoBack() );
278 DALI_TEST_CHECK( !view.CanGoForward() );
283 int UtcDaliWebViewTouchAndKeys(void)
285 ToolkitTestApplication application;
287 WebView view = WebView::New();
288 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
289 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
290 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
291 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
293 application.GetScene().Add( view );
294 application.SendNotification();
295 application.Render();
297 view.GetNaturalSize();
298 view.TouchedSignal().Connect( &OnTouched );
301 Dali::Integration::TouchEvent event;
302 Dali::Integration::Point pointDown, pointUp;
304 event = Dali::Integration::TouchEvent();
305 pointDown.SetState( PointState::DOWN );
306 pointDown.SetScreenPosition( Vector2( 10, 10 ) );
307 event.AddPoint( pointDown );
308 application.ProcessEvent( event );
310 event = Dali::Integration::TouchEvent();
311 pointUp.SetState( PointState::UP );
312 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
313 event.AddPoint( pointUp );
314 application.ProcessEvent( event );
317 Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( view );
318 application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) );
319 application.SendNotification();
321 DALI_TEST_CHECK( gTouched );
322 DALI_TEST_CHECK( view );
327 int UtcDaliWebViewFocusGainedAndLost(void)
329 ToolkitTestApplication application;
331 WebView view = WebView::New();
332 DALI_TEST_CHECK( view );
334 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
335 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
336 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
337 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
339 application.GetScene().Add( view );
340 application.SendNotification();
341 application.Render();
343 view.SetKeyInputFocus();
344 DALI_TEST_CHECK( view.HasKeyInputFocus() );
347 view.ClearKeyInputFocus();
348 DALI_TEST_CHECK( !view.HasKeyInputFocus() );
353 int UtcDaliWebViewMove(void)
355 ToolkitTestApplication application;
357 WebView view = WebView::New();
358 DALI_TEST_CHECK( view );
360 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
361 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
362 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
363 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
365 application.GetScene().Add( view );
366 application.SendNotification();
367 application.Render();
369 view.SetProperty( Actor::Property::POSITION, Vector2( 100, 100 ));
370 Vector3 viewPos = view.GetProperty<Vector3>( Actor::Property::POSITION );
371 DALI_TEST_EQUALS( viewPos, Vector3( 100, 100, 0 ), TEST_LOCATION );
376 int UtcDaliWebViewPropertyVideoHoleEnabled(void)
378 ToolkitTestApplication application;
380 WebView view = WebView::New();
381 DALI_TEST_CHECK( view );
383 const bool kDefaultValue = true;
384 const bool kTestValue = false;
386 // Check default value
388 Property::Value value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
389 DALI_TEST_CHECK( value.Get( output ) );
390 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
392 // Check Set/GetProperty
393 view.SetProperty( WebView::Property::VIDEO_HOLE_ENABLED, kTestValue );
394 value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
395 DALI_TEST_CHECK( value.Get( output ) );
396 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
401 int UtcDaliWebViewPropertyMouseEventsEnabled(void)
403 ToolkitTestApplication application;
405 WebView view = WebView::New();
406 DALI_TEST_CHECK( view );
408 const bool kDefaultValue = true;
409 const bool kTestValue = false;
411 // Check default value
413 Property::Value value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
414 DALI_TEST_CHECK( value.Get( output ) );
415 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
417 // Check Set/GetProperty
418 view.SetProperty( WebView::Property::MOUSE_EVENTS_ENABLED, kTestValue );
419 value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
420 DALI_TEST_CHECK( value.Get( output ) );
421 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
426 int UtcDaliWebViewPropertyKeyEventsEnabled(void)
428 ToolkitTestApplication application;
430 WebView view = WebView::New();
431 DALI_TEST_CHECK( view );
433 const bool kDefaultValue = true;
434 const bool kTestValue = false;
436 // Check default value
438 Property::Value value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
439 DALI_TEST_CHECK( value.Get( output ) );
440 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
442 // Check Set/GetProperty
443 view.SetProperty( WebView::Property::KEY_EVENTS_ENABLED, kTestValue );
444 value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
445 DALI_TEST_CHECK( value.Get( output ) );
446 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
451 int UtcDaliWebViewHoverAndWheel(void)
453 ToolkitTestApplication application;
455 WebView view = WebView::New();
456 DALI_TEST_CHECK( view );
457 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
458 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
459 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
460 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
462 application.GetScene().Add( view );
463 application.SendNotification();
464 application.Render();
466 view.GetNaturalSize();
467 view.HoveredSignal().Connect( &OnHovered );
468 view.WheelEventSignal().Connect( &OnWheelEvent );
471 Dali::Integration::HoverEvent event = Dali::Integration::HoverEvent();
472 Dali::Integration::Point pointDown;
473 pointDown.SetState( PointState::DOWN );
474 pointDown.SetScreenPosition( Vector2( 10, 10 ) );
475 event.AddPoint( pointDown );
476 application.ProcessEvent( event );
478 event = Dali::Integration::HoverEvent();
479 Dali::Integration::Point pointUp;
480 pointUp.SetState( PointState::UP );
481 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
482 event.AddPoint( pointUp );
483 application.ProcessEvent( event );
485 event = Dali::Integration::HoverEvent();
486 Dali::Integration::Point pointMotion;
487 pointUp.SetState( PointState::MOTION );
488 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
489 event.AddPoint( pointMotion );
490 application.ProcessEvent( event );
493 Dali::Integration::WheelEvent wheelEvent;
494 wheelEvent.type = Dali::Integration::WheelEvent::Type::MOUSE_WHEEL;
495 wheelEvent.direction = 0;
496 wheelEvent.point = Vector2( 20, 20 );
497 wheelEvent.delta = 10;
498 application.ProcessEvent( wheelEvent );
499 application.SendNotification();
501 DALI_TEST_CHECK( gHovered );
502 DALI_TEST_CHECK( gWheelEventHandled );
507 int UtcDaliWebViewGetWebBackForwardList(void)
509 ToolkitTestApplication application;
511 WebView view = WebView::New();
512 DALI_TEST_CHECK( view );
514 Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
515 DALI_TEST_CHECK( bfList != 0 );
520 int UtcDaliWebViewGetWebContext(void)
522 ToolkitTestApplication application;
524 WebView view = WebView::New();
525 DALI_TEST_CHECK( view );
527 Dali::Toolkit::WebContext* context = view.GetContext();
528 DALI_TEST_CHECK( context != 0 );
533 int UtcDaliWebViewGetWebCookieManager(void)
535 ToolkitTestApplication application;
537 WebView view = WebView::New();
538 DALI_TEST_CHECK( view );
540 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
541 DALI_TEST_CHECK( cookieManager != 0 );
546 int UtcDaliWebViewGetWebSettings(void)
548 ToolkitTestApplication application;
550 WebView view = WebView::New();
551 DALI_TEST_CHECK( view );
553 Dali::Toolkit::WebSettings* settings = view.GetSettings();
554 DALI_TEST_CHECK( settings != 0 );
559 int UtcDaliWebViewProperty1(void)
562 ToolkitTestApplication application;
564 WebView view = WebView::New();
565 DALI_TEST_CHECK( view );
568 view.SetProperty( WebView::Property::URL, TEST_URL1 );
569 Property::Value val = view.GetProperty( WebView::Property::URL );
570 DALI_TEST_CHECK( val.Get( local ) );
571 DALI_TEST_EQUALS( local, TEST_URL1, TEST_LOCATION );
576 int UtcDaliWebViewProperty4(void)
579 ToolkitTestApplication application;
581 WebView view = WebView::New();
582 DALI_TEST_CHECK( view );
584 const std::string kDefaultValue;
585 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";
587 // Check default value
589 Property::Value value = view.GetProperty( WebView::Property::USER_AGENT );
590 DALI_TEST_CHECK( value.Get( output ) );
591 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
593 // Check Set/GetProperty
594 view.SetProperty( WebView::Property::USER_AGENT, kTestValue );
595 value = view.GetProperty( WebView::Property::USER_AGENT );
596 DALI_TEST_CHECK( value.Get( output ) );
597 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
602 int UtcDaliWebViewProperty9(void)
605 ToolkitTestApplication application;
607 WebView view = WebView::New();
608 DALI_TEST_CHECK( view );
610 // Check default value
611 Dali::Vector2 output = Dali::Vector2::ONE;
612 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
613 DALI_TEST_CHECK( output.x == 0 && output.y == 0 );
615 // Check Set/GetProperty
616 Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
617 view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
618 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
619 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
621 // Check default value of scroll size
622 output = Dali::Vector2::ONE;
623 view.GetProperty( WebView::Property::SCROLL_SIZE ).Get( output );
624 DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
626 // Check default value of content size
627 output = Dali::Vector2::ONE;
628 view.GetProperty( WebView::Property::CONTENT_SIZE ).Get( output );
629 DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
634 int UtcDaliWebViewPropertyTitleFavicon(void)
637 ToolkitTestApplication application;
639 char argv[] = "--test";
640 WebView view = WebView::New( 1, (char**)&argv );
641 DALI_TEST_CHECK( view );
644 view.ClearAllTilesResources();
646 // Check default value of title
647 std::string testValue("title");
649 view.GetProperty( WebView::Property::TITLE ).Get( output );
650 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
652 // Check default value of favicon
653 Dali::Toolkit::ImageView* favicon = &view.GetFavicon();
654 DALI_TEST_CHECK( favicon );
655 Dali::Vector3 iconsize = favicon->GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
656 DALI_TEST_CHECK( ( int )iconsize.width == 2 && ( int )iconsize.height == 2 );
661 int UtcDaliWebViewScrollBy(void)
663 ToolkitTestApplication application;
665 WebView view = WebView::New();
666 DALI_TEST_CHECK( view );
669 ConnectionTracker* testTracker = new ConnectionTracker();
670 view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
671 bool signal1 = false;
672 view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
673 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
675 view.LoadUrl( TEST_URL1 );
676 Test::EmitGlobalTimerSignal();
678 // set scroll position.
679 Dali::Vector2 output = Dali::Vector2::ONE;
680 Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
681 view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
682 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
683 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
685 // scroll by and trigger scrollEdgeReached event.
686 view.ScrollBy( 50, 50 );
687 Test::EmitGlobalTimerSignal();
689 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
690 DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
691 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
692 DALI_TEST_CHECK( signal1 );
697 int UtcDaliWebViewEvaluteJavaScript(void)
699 ToolkitTestApplication application;
701 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
703 view.LoadHtmlString( "<body>Hello World!</body>" );
704 view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
705 view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript );
706 Test::EmitGlobalTimerSignal();
708 DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION );
713 int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void)
715 ToolkitTestApplication application;
717 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
719 view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert );
720 view.LoadHtmlString( "<head><script type='text/javascript'>alert('this is an alert popup.');</script></head><body>Hello World!</body>" );
721 view.JavaScriptAlertReply();
722 Test::EmitGlobalTimerSignal();
723 DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION );
725 view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm );
726 view.LoadHtmlString( "<head><script type='text/javascript'>confirm('this is a confirm popup.');</script></head><body>Hello World!</body>" );
727 view.JavaScriptConfirmReply( true );
728 Test::EmitGlobalTimerSignal();
729 DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION );
731 view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt );
732 view.LoadHtmlString( "<head><script type='text/javascript'>prompt('this is a prompt popup.');</script></head><body>Hello World!</body>" );
733 view.JavaScriptPromptReply( "it is a prompt." );
734 Test::EmitGlobalTimerSignal();
735 DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION );
740 int UtcDaliWebViewMethodsForCoverage(void)
742 ToolkitTestApplication application;
744 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
746 view.LoadHtmlString( "<body>Hello World!</body>" );
747 view.AddJavaScriptMessageHandler( "jsObject",
748 []( const std::string& arg ) {
752 DALI_TEST_CHECK( view );
757 // test cases for web backforward list.
759 int UtcDaliWebBackForwardListCheckItem(void)
761 ToolkitTestApplication application;
763 WebView view = WebView::New();
764 DALI_TEST_CHECK( view );
766 Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
767 DALI_TEST_CHECK( bfList != 0 )
769 unsigned int itemCount = bfList->GetItemCount();
770 DALI_TEST_CHECK( itemCount == 1 )
772 Dali::Toolkit::WebBackForwardListItem* citem = bfList->GetCurrentItem();
773 DALI_TEST_CHECK( citem != 0 );
775 const std::string kDefaultUrl( "http://url" );
776 std::string testValue = citem->GetUrl();
777 DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION );
779 const std::string kDefaultTitle( "title" );
780 testValue = citem->GetTitle();
781 DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION );
783 const std::string kDefaultOriginalUrl( "http://originalurl" );
784 testValue = citem->GetOriginalUrl();
785 DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION );
787 Dali::Toolkit::WebBackForwardListItem* item = bfList->GetItemAtIndex( 0 );
788 DALI_TEST_CHECK( item != 0 );
793 // test cases for web context.
795 int UtcDaliWebContextGetSetCacheModel(void)
797 ToolkitTestApplication application;
799 WebView view = WebView::New();
800 DALI_TEST_CHECK( view );
802 Dali::Toolkit::WebContext* context = view.GetContext();
803 DALI_TEST_CHECK( context != 0 )
805 std::string kDefaultValue;
808 context->SetProxyUri( kDefaultValue );
809 context->SetCertificateFilePath( kDefaultValue );
810 context->DisableCache( false );
811 context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
812 context->DeleteWebDatabase();
813 context->DeleteWebStorage();
814 context->DeleteLocalFileSystem();
815 context->ClearCache();
817 // Check default value
818 Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
819 DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
821 // Check Set/GetProperty
822 context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
823 value = context->GetCacheModel();
824 DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
829 // test cases for web cookie manager.
831 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
833 ToolkitTestApplication application;
835 WebView view = WebView::New();
836 DALI_TEST_CHECK( view );
838 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
839 DALI_TEST_CHECK( cookieManager != 0 )
841 const std::string kDefaultValue;
844 cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
845 cookieManager->ClearCookies();
847 // Check default value
848 Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
849 DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
851 // Check Set/GetProperty
852 cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
853 value = cookieManager->GetCookieAcceptPolicy();
854 DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
859 // test cases for web settings.
861 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
863 ToolkitTestApplication application;
865 WebView view = WebView::New();
866 DALI_TEST_CHECK( view );
868 Dali::Toolkit::WebSettings* settings = view.GetSettings();
869 DALI_TEST_CHECK( settings != 0 )
872 settings->AllowMixedContents( false );
873 settings->EnableSpatialNavigation( false );
874 settings->EnableWebSecurity( false );
875 settings->EnableCacheBuilder( false );
876 settings->EnableDoNotTrack( false );
877 settings->UseScrollbarThumbFocusNotifications( false );
878 settings->AllowFileAccessFromExternalUrl( false );
879 settings->AllowScriptsOpenWindows( false );
881 // Check default value
882 int value = settings->GetDefaultFontSize();
883 DALI_TEST_CHECK( value == 16 );
885 // Check Set/GetProperty
886 settings->SetDefaultFontSize( 20 );
887 value = settings->GetDefaultFontSize();
888 DALI_TEST_CHECK( value == 20 );
893 int UtcDaliWebSettingsCheckEnableJavaScript(void)
895 ToolkitTestApplication application;
897 WebView view = WebView::New();
898 DALI_TEST_CHECK( view );
900 Dali::Toolkit::WebSettings* settings = view.GetSettings();
901 DALI_TEST_CHECK( settings != 0 )
904 settings->AllowMixedContents( false );
905 settings->EnableSpatialNavigation( false );
906 settings->EnableWebSecurity( false );
907 settings->EnableCacheBuilder( false );
908 settings->EnableDoNotTrack( false );
909 settings->UseScrollbarThumbFocusNotifications( false );
910 settings->AllowFileAccessFromExternalUrl( false );
911 settings->AllowScriptsOpenWindows( false );
913 // Check default value is true or not
914 bool value = settings->IsJavaScriptEnabled();
915 DALI_TEST_CHECK( value );
917 // Check Set/GetProperty
918 settings->EnableJavaScript( false );
919 value = settings->IsJavaScriptEnabled();
920 DALI_TEST_CHECK( !value );
925 int UtcDaliWebSettingsCheckEnableAutoFitting(void)
927 ToolkitTestApplication application;
929 WebView view = WebView::New();
930 DALI_TEST_CHECK( view );
932 Dali::Toolkit::WebSettings* settings = view.GetSettings();
933 DALI_TEST_CHECK( settings != 0 )
936 settings->AllowMixedContents( false );
937 settings->EnableSpatialNavigation( false );
938 settings->EnableWebSecurity( false );
939 settings->EnableCacheBuilder( false );
940 settings->EnableDoNotTrack( false );
941 settings->UseScrollbarThumbFocusNotifications( false );
942 settings->AllowFileAccessFromExternalUrl( false );
943 settings->AllowScriptsOpenWindows( false );
945 // Check default value is true or not
946 bool value = settings->IsAutoFittingEnabled();
947 DALI_TEST_CHECK( value );
949 // Check Set/GetProperty
950 settings->EnableAutoFitting( false );
951 value = settings->IsAutoFittingEnabled();
952 DALI_TEST_CHECK( !value );
957 int UtcDaliWebSettingsCheckEnablePlugins(void)
959 ToolkitTestApplication application;
961 WebView view = WebView::New();
962 DALI_TEST_CHECK( view );
964 Dali::Toolkit::WebSettings* settings = view.GetSettings();
965 DALI_TEST_CHECK( settings != 0 )
968 settings->AllowMixedContents( false );
969 settings->EnableSpatialNavigation( false );
970 settings->EnableWebSecurity( false );
971 settings->EnableCacheBuilder( false );
972 settings->EnableDoNotTrack( false );
973 settings->UseScrollbarThumbFocusNotifications( false );
974 settings->AllowFileAccessFromExternalUrl( false );
975 settings->AllowScriptsOpenWindows( false );
977 // Check default value is true or not
978 bool value = settings->ArePluginsEnabled();
979 DALI_TEST_CHECK( value );
981 // Check Set/GetProperty
982 settings->EnablePlugins( false );
983 value = settings->ArePluginsEnabled();
984 DALI_TEST_CHECK( !value );
989 int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void)
991 ToolkitTestApplication application;
993 WebView view = WebView::New();
994 DALI_TEST_CHECK( view );
996 Dali::Toolkit::WebSettings* settings = view.GetSettings();
997 DALI_TEST_CHECK( settings != 0 )
1000 settings->AllowMixedContents( false );
1001 settings->EnableSpatialNavigation( false );
1002 settings->EnableWebSecurity( false );
1003 settings->EnableCacheBuilder( false );
1004 settings->EnableDoNotTrack( false );
1005 settings->UseScrollbarThumbFocusNotifications( false );
1006 settings->AllowFileAccessFromExternalUrl( false );
1007 settings->AllowScriptsOpenWindows( false );
1009 // Check default value is true or not
1010 bool value = settings->IsPrivateBrowsingEnabled();
1011 DALI_TEST_CHECK( value );
1013 // Check Set/GetProperty
1014 settings->EnablePrivateBrowsing( false );
1015 value = settings->IsPrivateBrowsingEnabled();
1016 DALI_TEST_CHECK( !value );
1021 int UtcDaliWebSettingsCheckEnableLinkMagnifier(void)
1023 ToolkitTestApplication application;
1025 WebView view = WebView::New();
1026 DALI_TEST_CHECK( view );
1028 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1029 DALI_TEST_CHECK( settings != 0 )
1032 settings->AllowMixedContents( false );
1033 settings->EnableSpatialNavigation( false );
1034 settings->EnableWebSecurity( false );
1035 settings->EnableCacheBuilder( false );
1036 settings->EnableDoNotTrack( false );
1037 settings->UseScrollbarThumbFocusNotifications( false );
1038 settings->AllowFileAccessFromExternalUrl( false );
1039 settings->AllowScriptsOpenWindows( false );
1041 // Check default value is true or not
1042 bool value = settings->IsLinkMagnifierEnabled();
1043 DALI_TEST_CHECK( value );
1045 // Check Set/GetProperty
1046 settings->EnableLinkMagnifier( false );
1047 value = settings->IsLinkMagnifierEnabled();
1048 DALI_TEST_CHECK( !value );
1053 int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void)
1055 ToolkitTestApplication application;
1057 WebView view = WebView::New();
1058 DALI_TEST_CHECK( view );
1060 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1061 DALI_TEST_CHECK( settings != 0 )
1064 settings->AllowMixedContents( false );
1065 settings->EnableSpatialNavigation( false );
1066 settings->EnableWebSecurity( false );
1067 settings->EnableCacheBuilder( false );
1068 settings->EnableDoNotTrack( false );
1069 settings->UseScrollbarThumbFocusNotifications( false );
1070 settings->AllowFileAccessFromExternalUrl( false );
1071 settings->AllowScriptsOpenWindows( false );
1073 // Check default value is true or not
1074 bool value = settings->IsKeypadWithoutUserActionUsed();
1075 DALI_TEST_CHECK( value );
1077 // Check Set/GetProperty
1078 settings->UseKeypadWithoutUserAction( false );
1079 value = settings->IsKeypadWithoutUserActionUsed();
1080 DALI_TEST_CHECK( !value );
1085 int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void)
1087 ToolkitTestApplication application;
1089 WebView view = WebView::New();
1090 DALI_TEST_CHECK( view );
1092 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1093 DALI_TEST_CHECK( settings != 0 )
1096 settings->AllowMixedContents( false );
1097 settings->EnableSpatialNavigation( false );
1098 settings->EnableWebSecurity( false );
1099 settings->EnableCacheBuilder( false );
1100 settings->EnableDoNotTrack( false );
1101 settings->UseScrollbarThumbFocusNotifications( false );
1102 settings->AllowFileAccessFromExternalUrl( false );
1103 settings->AllowScriptsOpenWindows( false );
1105 // Check default value is true or not
1106 bool value = settings->IsAutofillPasswordFormEnabled();
1107 DALI_TEST_CHECK( value );
1108 settings->EnableAutofillPasswordForm( false );
1109 value = settings->IsAutofillPasswordFormEnabled();
1110 DALI_TEST_CHECK( !value );
1114 int UtcDaliWebSettingsCheckEnableFormCandidateData(void)
1116 ToolkitTestApplication application;
1118 WebView view = WebView::New();
1119 DALI_TEST_CHECK( view );
1121 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1122 DALI_TEST_CHECK( settings != 0 );
1125 settings->AllowMixedContents( false );
1126 settings->EnableSpatialNavigation( false );
1127 settings->EnableWebSecurity( false );
1128 settings->EnableCacheBuilder( false );
1129 settings->EnableDoNotTrack( false );
1130 settings->UseScrollbarThumbFocusNotifications( false );
1131 settings->AllowFileAccessFromExternalUrl( false );
1132 settings->AllowScriptsOpenWindows( false );
1134 // Check default value is true or not
1135 bool value = settings->IsFormCandidateDataEnabled();
1136 DALI_TEST_CHECK( value );
1138 // Check Set/GetProperty
1139 settings->EnableFormCandidateData( false );
1140 value = settings->IsFormCandidateDataEnabled();
1141 DALI_TEST_CHECK( !value );
1146 int UtcDaliWebSettingsCheckEnableTextSelection(void)
1148 ToolkitTestApplication application;
1150 WebView view = WebView::New();
1151 DALI_TEST_CHECK( view );
1153 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1154 DALI_TEST_CHECK( settings != 0 );
1157 settings->AllowMixedContents( false );
1158 settings->EnableSpatialNavigation( false );
1159 settings->EnableWebSecurity( false );
1160 settings->EnableCacheBuilder( false );
1161 settings->EnableDoNotTrack( false );
1162 settings->UseScrollbarThumbFocusNotifications( false );
1163 settings->AllowFileAccessFromExternalUrl( false );
1164 settings->AllowScriptsOpenWindows( false );
1166 // Check default value is true or not
1167 bool value = settings->IsTextSelectionEnabled();
1168 DALI_TEST_CHECK( value );
1170 //Check Set/GetProperty
1171 settings->EnableTextSelection(false);
1172 value = settings->IsTextSelectionEnabled();
1173 DALI_TEST_CHECK( !value );
1178 int UtcDaliWebSettingsCheckEnableTextAutosizing(void)
1180 ToolkitTestApplication application;
1182 WebView view = WebView::New();
1183 DALI_TEST_CHECK( view );
1185 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1186 DALI_TEST_CHECK( settings != 0 );
1189 settings->AllowMixedContents( false );
1190 settings->EnableSpatialNavigation( false );
1191 settings->EnableWebSecurity( false );
1192 settings->EnableCacheBuilder( false );
1193 settings->EnableDoNotTrack( false );
1194 settings->UseScrollbarThumbFocusNotifications( false );
1195 settings->AllowFileAccessFromExternalUrl( false );
1196 settings->AllowScriptsOpenWindows( false );
1198 // Check default value is true or not
1199 bool value = settings->IsTextAutosizingEnabled();
1200 DALI_TEST_CHECK( value );
1202 // Check Set/GetProperty
1203 settings->EnableTextAutosizing(false);
1204 value = settings->IsTextAutosizingEnabled();
1205 DALI_TEST_CHECK( !value );
1210 int UtcDaliWebSettingsCheckEnableArrowScroll(void)
1212 ToolkitTestApplication application;
1214 WebView view = WebView::New();
1215 DALI_TEST_CHECK( view );
1217 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1218 DALI_TEST_CHECK( settings != 0 );
1221 settings->AllowMixedContents( false );
1222 settings->EnableSpatialNavigation( false );
1223 settings->EnableWebSecurity( false );
1224 settings->EnableCacheBuilder( false );
1225 settings->EnableDoNotTrack( false );
1226 settings->UseScrollbarThumbFocusNotifications( false );
1227 settings->AllowFileAccessFromExternalUrl( false );
1228 settings->AllowScriptsOpenWindows( false );
1230 // Check default value is true or not
1231 bool value = settings->IsArrowScrollEnabled();
1232 DALI_TEST_CHECK( value );
1234 // Check Set/GetProperty
1235 settings->EnableArrowScroll(false);
1236 value = settings->IsArrowScrollEnabled();
1237 DALI_TEST_CHECK( !value );
1242 int UtcDaliWebSettingsCheckEnableClipboard(void)
1244 ToolkitTestApplication application;
1246 WebView view = WebView::New();
1247 DALI_TEST_CHECK( view );
1249 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1250 DALI_TEST_CHECK( settings != 0 );
1253 settings->AllowMixedContents( false );
1254 settings->EnableSpatialNavigation( false );
1255 settings->EnableWebSecurity( false );
1256 settings->EnableCacheBuilder( false );
1257 settings->EnableDoNotTrack( false );
1258 settings->UseScrollbarThumbFocusNotifications( false );
1259 settings->AllowFileAccessFromExternalUrl( false );
1260 settings->AllowScriptsOpenWindows( false );
1262 // Check default value is true or not
1263 bool value = settings->IsClipboardEnabled();
1264 DALI_TEST_CHECK( value );
1265 settings->EnableClipboard(false);
1266 value = settings->IsClipboardEnabled();
1267 DALI_TEST_CHECK( !value );
1271 int UtcDaliWebSettingsCheckEnableImePanel(void)
1273 ToolkitTestApplication application;
1275 WebView view = WebView::New();
1276 DALI_TEST_CHECK( view );
1278 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1279 DALI_TEST_CHECK( settings != 0 );
1282 settings->AllowMixedContents( false );
1283 settings->EnableSpatialNavigation( false );
1284 settings->EnableWebSecurity( false );
1285 settings->EnableCacheBuilder( false );
1286 settings->EnableDoNotTrack( false );
1287 settings->UseScrollbarThumbFocusNotifications( false );
1288 settings->AllowFileAccessFromExternalUrl( false );
1289 settings->AllowScriptsOpenWindows( false );
1291 // Check default value is true or not
1292 bool value = settings->IsImePanelEnabled();
1293 DALI_TEST_CHECK( value );
1295 // Check Set/GetProperty
1296 settings->EnableImePanel(false);
1297 value = settings->IsImePanelEnabled();
1298 DALI_TEST_CHECK( !value );
1303 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
1305 ToolkitTestApplication application;
1307 WebView view = WebView::New();
1308 DALI_TEST_CHECK( view );
1310 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1311 DALI_TEST_CHECK( settings != 0 )
1314 settings->AllowMixedContents( false );
1315 settings->EnableSpatialNavigation( false );
1316 settings->EnableWebSecurity( false );
1317 settings->EnableCacheBuilder( false );
1318 settings->EnableDoNotTrack( false );
1319 settings->UseScrollbarThumbFocusNotifications( false );
1320 settings->AllowFileAccessFromExternalUrl( false );
1321 settings->AllowScriptsOpenWindows( false );
1323 // Check default value is true or not
1324 bool value = settings->AreImagesLoadedAutomatically();
1325 DALI_TEST_CHECK( value );
1327 // Check Set/GetProperty
1328 settings->AllowImagesLoadAutomatically( false );
1329 value = settings->AreImagesLoadedAutomatically();
1330 DALI_TEST_CHECK( !value );
1335 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
1337 ToolkitTestApplication application;
1339 WebView view = WebView::New();
1340 DALI_TEST_CHECK( view );
1342 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1343 DALI_TEST_CHECK( settings != 0 )
1345 const std::string kDefaultValue;
1346 const std::string kTestValue = "UTF-8";
1349 settings->AllowMixedContents( false );
1350 settings->EnableSpatialNavigation( false );
1351 settings->EnableWebSecurity( false );
1352 settings->EnableCacheBuilder( false );
1353 settings->EnableDoNotTrack( false );
1354 settings->UseScrollbarThumbFocusNotifications( false );
1355 settings->AllowFileAccessFromExternalUrl( false );
1356 settings->AllowScriptsOpenWindows( false );
1358 // Check default value
1359 std::string value = settings->GetDefaultTextEncodingName();
1360 DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
1362 // Check Set/GetProperty
1363 settings->SetDefaultTextEncodingName( kTestValue );
1364 value = settings->GetDefaultTextEncodingName();
1365 DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );