2 * Copyright (c) 2021 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/devel-api/adaptor-framework/web-engine-certificate.h>
26 #include <dali/devel-api/adaptor-framework/web-engine-console-message.h>
27 #include <dali/devel-api/adaptor-framework/web-engine-context-menu.h>
28 #include <dali/devel-api/adaptor-framework/web-engine-context-menu-item.h>
29 #include <dali/devel-api/adaptor-framework/web-engine-form-repost-decision.h>
30 #include <dali/devel-api/adaptor-framework/web-engine-frame.h>
31 #include <dali/devel-api/adaptor-framework/web-engine-hit-test.h>
32 #include <dali/devel-api/adaptor-framework/web-engine-http-auth-handler.h>
33 #include <dali/devel-api/adaptor-framework/web-engine-load-error.h>
34 #include <dali/devel-api/adaptor-framework/web-engine-policy-decision.h>
35 #include <dali/devel-api/adaptor-framework/web-engine-request-interceptor.h>
36 #include <dali/devel-api/adaptor-framework/web-engine-context.h>
37 #include <dali/devel-api/adaptor-framework/web-engine-security-origin.h>
38 #include <dali/integration-api/events/hover-event-integ.h>
39 #include <dali/integration-api/events/key-event-integ.h>
40 #include <dali/integration-api/events/touch-event-integ.h>
41 #include <dali/integration-api/events/wheel-event-integ.h>
42 #include <dali/public-api/images/pixel-data.h>
43 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
44 #include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
45 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list.h>
46 #include <dali-toolkit/devel-api/controls/web-view/web-context.h>
47 #include <dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h>
48 #include <dali-toolkit/devel-api/controls/web-view/web-settings.h>
49 #include <dali-toolkit/devel-api/controls/web-view/web-view.h>
52 using namespace Toolkit;
57 const char* const TEST_URL1( "http://www.somewhere.valid1.com" );
58 const char* const TEST_URL2( "http://www.somewhere.valid2.com" );
60 static int gPageLoadStartedCallbackCalled = 0;
61 static int gPageLoadInProgressCallbackCalled = 0;
62 static int gPageLoadFinishedCallbackCalled = 0;
63 static int gPageLoadErrorCallbackCalled = 0;
64 static std::shared_ptr<Dali::WebEngineLoadError> gPageLoadErrorInstance = nullptr;
65 static int gScrollEdgeReachedCallbackCalled = 0;
66 static int gUrlChangedCallbackCalled = 0;
67 static int gEvaluateJavaScriptCallbackCalled = 0;
68 static int gJavaScriptAlertCallbackCalled = 0;
69 static int gJavaScriptConfirmCallbackCalled = 0;
70 static int gJavaScriptPromptCallbackCalled = 0;
71 static int gScreenshotCapturedCallbackCalled = 0;
72 static int gVideoPlayingCallbackCalled = 0;
73 static int gGeolocationPermissionCallbackCalled = 0;
74 static bool gTouched = false;
75 static bool gHovered = false;
76 static bool gWheelEventHandled = false;
77 static int gFormRepostDecisionCallbackCalled = 0;
78 static std::shared_ptr<Dali::WebEngineFormRepostDecision> gFormRepostDecisionInstance = nullptr;
79 static int gFrameRenderedCallbackCalled = 0;
80 static int gRequestInterceptorCallbackCalled = 0;
81 static std::shared_ptr<Dali::WebEngineRequestInterceptor> gRequestInterceptorInstance = nullptr;
82 static int gConsoleMessageCallbackCalled = 0;
83 static std::shared_ptr<Dali::WebEngineConsoleMessage> gConsoleMessageInstance = nullptr;
84 static int gResponsePolicyDecidedCallbackCalled = 0;
85 static std::shared_ptr<Dali::WebEnginePolicyDecision> gResponsePolicyDecisionInstance = nullptr;
86 static int gCertificateConfirmCallbackCalled = 0;
87 static std::shared_ptr<Dali::WebEngineCertificate> gCertificateConfirmInstance = nullptr;
88 static int gSslCertificateChangedCallbackCalled = 0;
89 static std::shared_ptr<Dali::WebEngineCertificate> gSslCertificateInstance = nullptr;
90 static int gHttpAuthHandlerCallbackCalled = 0;
91 static std::shared_ptr<Dali::WebEngineHttpAuthHandler> gHttpAuthInstance = nullptr;
92 static int gSecurityOriginsAcquiredCallbackCalled = 0;
93 static int gStorageUsageAcquiredCallbackCalled = 0;
94 static int gFormPasswordsAcquiredCallbackCalled = 0;
95 static int gDownloadStartedCallbackCalled = 0;
96 static int gMimeOverriddenCallbackCalled = 0;
97 static std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> gSecurityOriginList;
98 static std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> gPasswordDataList;
99 static int gContextMenuCustomizedCallbackCalled = 0;
100 static std::shared_ptr<Dali::WebEngineContextMenu> gContextMenuInstance = nullptr;
101 static int gContextMenuItemSelectedCallbackCalled = 0;
102 static std::shared_ptr<Dali::WebEngineContextMenuItem> gContextMenuItemInstance = nullptr;
103 static int gHitTestCreatedCallbackCalled = 0;
104 static int gCookieManagerChangsWatchCallbackCalled = 0;
106 struct CallbackFunctor
108 CallbackFunctor(bool* callbackFlag)
109 : mCallbackFlag( callbackFlag )
115 *mCallbackFlag = true;
120 static void OnPageLoadStarted( WebView view, const std::string& url )
122 gPageLoadStartedCallbackCalled++;
125 static void OnPageLoadInProgress( WebView view, const std::string& url )
127 gPageLoadInProgressCallbackCalled++;
130 static void OnPageLoadFinished( WebView view, const std::string& url )
132 gPageLoadFinishedCallbackCalled++;
135 static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge edge )
137 gScrollEdgeReachedCallbackCalled++;
140 static void OnResponsePolicyDecided(WebView view, std::shared_ptr<Dali::WebEnginePolicyDecision> decision)
142 gResponsePolicyDecidedCallbackCalled++;
143 gResponsePolicyDecisionInstance = std::move(decision);
146 static void OnUrlChanged( WebView view, const std::string& url )
148 gUrlChangedCallbackCalled++;
151 static bool OnHitTestCreated(std::unique_ptr<Dali::WebEngineHitTest> test)
153 gHitTestCreatedCallbackCalled++;
157 static void OnPageLoadError(WebView view, std::shared_ptr<Dali::WebEngineLoadError> error)
159 gPageLoadErrorCallbackCalled++;
160 gPageLoadErrorInstance = std::move(error);
163 static void OnEvaluateJavaScript( const std::string& result )
165 gEvaluateJavaScriptCallbackCalled++;
168 static bool OnJavaScriptAlert( const std::string& result )
170 gJavaScriptAlertCallbackCalled++;
174 static bool OnJavaScriptConfirm( const std::string& result )
176 gJavaScriptConfirmCallbackCalled++;
180 static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& message2 )
182 gJavaScriptPromptCallbackCalled++;
186 static void OnScreenshotCaptured(Dali::Toolkit::ImageView)
188 gScreenshotCapturedCallbackCalled++;
191 static void OnVideoPlaying(bool isPlaying)
193 gVideoPlayingCallbackCalled++;
196 static bool OnGeolocationPermission(const std::string&, const std::string&)
198 gGeolocationPermissionCallbackCalled++;
202 static bool OnTouched( Actor actor, const Dali::TouchEvent& touch )
208 static void OnChangesWatch()
210 gCookieManagerChangsWatchCallbackCalled++;
213 static bool OnHovered( Actor actor, const Dali::HoverEvent& hover )
219 static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel )
221 gWheelEventHandled = true;
225 static void OnFormRepostDecision(WebView, std::shared_ptr<Dali::WebEngineFormRepostDecision> decision)
227 gFormRepostDecisionCallbackCalled++;
228 gFormRepostDecisionInstance = std::move(decision);
231 static void OnFrameRendered(WebView)
233 gFrameRenderedCallbackCalled++;
236 static void OnRequestInterceptor(WebView view, std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor)
238 gRequestInterceptorCallbackCalled++;
239 gRequestInterceptorInstance = std::move(interceptor);
242 static void OnConsoleMessage(WebView view, std::shared_ptr<Dali::WebEngineConsoleMessage> message)
244 gConsoleMessageCallbackCalled++;
245 gConsoleMessageInstance = std::move(message);
248 static void OnCertificateConfirm(WebView view, std::shared_ptr<Dali::WebEngineCertificate> certificate )
250 gCertificateConfirmCallbackCalled++;
251 gCertificateConfirmInstance = std::move(certificate);
254 static void OnSslCertificateChanged(WebView view, std::shared_ptr<Dali::WebEngineCertificate> certificate )
256 gSslCertificateChangedCallbackCalled++;
257 gSslCertificateInstance = std::move(certificate);
260 static void OnHttpAuthHandler( WebView view, std::shared_ptr<Dali::WebEngineHttpAuthHandler> hander )
262 gHttpAuthHandlerCallbackCalled++;
263 gHttpAuthInstance = std::move(hander);
266 static void OnSecurityOriginsAcquired(std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>>& origins)
268 gSecurityOriginsAcquiredCallbackCalled++;
269 gSecurityOriginList.clear();
270 gSecurityOriginList.swap(origins);
273 static void OnStorageUsageAcquired(uint64_t usage)
275 gStorageUsageAcquiredCallbackCalled++;
278 static void OnFormPasswordsAcquired(std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>>& passwords)
280 gFormPasswordsAcquiredCallbackCalled++;
281 gPasswordDataList.clear();
282 gPasswordDataList.swap(passwords);
285 static void OnDownloadStarted(const std::string& url)
287 gDownloadStartedCallbackCalled++;
290 static bool OnMimeOverridden(const std::string&, const std::string&, std::string&)
292 gMimeOverriddenCallbackCalled++;
296 static void OnContextMenuCustomized(WebView view, std::shared_ptr<Dali::WebEngineContextMenu> menu)
298 gContextMenuCustomizedCallbackCalled++;
299 gContextMenuInstance = std::move(menu);
302 static void OnContextMenuItemSelected(WebView view, std::shared_ptr<Dali::WebEngineContextMenuItem> item)
304 gContextMenuItemSelectedCallbackCalled++;
305 gContextMenuItemInstance = std::move(item);
310 void web_view_startup(void)
312 test_return_value = TET_UNDEF;
315 void web_view_cleanup(void)
317 test_return_value = TET_PASS;
320 int UtcDaliWebViewBasics(void)
322 ToolkitTestApplication application;
324 // Copy and Assignment Test
325 tet_infoline( "UtcDaliWebViewBasic Copy and Assignment Test" );
326 WebView view = WebView::New();
327 DALI_TEST_CHECK( view );
329 WebView copy( view );
330 DALI_TEST_CHECK( view == copy );
333 DALI_TEST_CHECK( !assign );
336 DALI_TEST_CHECK( assign == view );
339 tet_infoline( "UtcDaliWebViewBasic DownCast Test" );
340 BaseHandle handle(view);
342 WebView view2 = WebView::DownCast( handle );
343 DALI_TEST_CHECK( view );
344 DALI_TEST_CHECK( view2 );
345 DALI_TEST_CHECK( view == view2 );
348 tet_infoline( "UtcDaliWebViewBasic TypeRegistry Test" );
349 TypeRegistry typeRegistry = TypeRegistry::Get();
350 DALI_TEST_CHECK( typeRegistry );
352 TypeInfo typeInfo = typeRegistry.GetTypeInfo( "WebView" );
353 DALI_TEST_CHECK( typeInfo );
355 BaseHandle handle2 = typeInfo.CreateInstance();
356 DALI_TEST_CHECK( handle2 );
358 WebView view3 = WebView::DownCast( handle2 );
359 DALI_TEST_CHECK( view3 );
364 int UtcDaliWebViewPageNavigation(void)
366 ToolkitTestApplication application;
368 WebView view = WebView::New();
369 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
370 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
371 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
372 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
373 application.GetScene().Add( view );
374 application.SendNotification();
375 application.Render();
376 DALI_TEST_CHECK( view );
378 ConnectionTracker* testTracker = new ConnectionTracker();
379 view.PageLoadStartedSignal().Connect( &OnPageLoadStarted );
380 view.PageLoadInProgressSignal().Connect( &OnPageLoadInProgress );
381 view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished );
382 view.UrlChangedSignal().Connect( &OnUrlChanged );
383 bool signal1 = false;
384 bool signal2 = false;
385 bool signal3 = false;
386 bool signal4 = false;
387 bool signal5 = false;
388 view.ConnectSignal( testTracker, "pageLoadStarted", CallbackFunctor(&signal1) );
389 view.ConnectSignal( testTracker, "pageLoadInProgress", CallbackFunctor(&signal2) );
390 view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal3) );
391 view.ConnectSignal( testTracker, "urlChanged", CallbackFunctor(&signal4) );
392 view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal5) );
393 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 0, TEST_LOCATION );
394 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 0, TEST_LOCATION );
395 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 0, TEST_LOCATION );
396 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 0, TEST_LOCATION );
398 view.LoadUrl( TEST_URL1 );
399 view.GetNaturalSize();
400 Test::EmitGlobalTimerSignal();
401 DALI_TEST_EQUALS( view.CanGoBack(), false, TEST_LOCATION );
402 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 1, TEST_LOCATION );
403 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 1, TEST_LOCATION );
404 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 1, TEST_LOCATION );
405 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 1, TEST_LOCATION );
406 DALI_TEST_CHECK( signal1 & signal2 & signal3 & signal4 );
407 DALI_TEST_CHECK( !signal5 );
409 view.LoadUrl( TEST_URL2 );
411 view.SetProperty( Actor::Property::SIZE, Vector2( 400, 300 ) );
412 application.SendNotification();
413 application.Render();
414 Test::EmitGlobalTimerSignal();
416 DALI_TEST_EQUALS( view.CanGoBack(), true, TEST_LOCATION );
417 DALI_TEST_EQUALS( view.CanGoForward(), false, TEST_LOCATION );
418 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 2, TEST_LOCATION );
419 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 2, TEST_LOCATION );
420 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 2, TEST_LOCATION );
421 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 2, TEST_LOCATION );
424 Test::EmitGlobalTimerSignal();
425 DALI_TEST_CHECK( !view.CanGoBack() );
426 DALI_TEST_CHECK( view.CanGoForward() );
429 Test::EmitGlobalTimerSignal();
430 DALI_TEST_CHECK( view.CanGoBack() );
431 DALI_TEST_CHECK( !view.CanGoForward() );
436 Test::EmitGlobalTimerSignal();
437 DALI_TEST_CHECK( !view.CanGoBack() );
438 DALI_TEST_CHECK( !view.CanGoForward() );
443 int UtcDaliWebViewPageLoadErrorConsoleMessage(void)
445 ToolkitTestApplication application;
447 WebView view = WebView::New();
448 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
449 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
450 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
451 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
452 application.GetScene().Add( view );
453 application.SendNotification();
454 application.Render();
455 DALI_TEST_CHECK( view );
457 ConnectionTracker* testTracker = new ConnectionTracker();
458 view.PageLoadErrorSignal().Connect( &OnPageLoadError );
459 view.ConsoleMessageSignal().Connect( &OnConsoleMessage );
460 bool signal1 = false;
461 bool signal2 = false;
462 view.ConnectSignal( testTracker, "pageLoadError", CallbackFunctor(&signal1) );
463 view.ConnectSignal( testTracker, "consoleMessage", CallbackFunctor(&signal2) );
464 DALI_TEST_EQUALS( gPageLoadErrorCallbackCalled, 0, TEST_LOCATION );
465 DALI_TEST_EQUALS( gConsoleMessageCallbackCalled, 0, TEST_LOCATION );
467 view.LoadUrl( TEST_URL1 );
468 Test::EmitGlobalTimerSignal();
469 DALI_TEST_EQUALS( gPageLoadErrorCallbackCalled, 1, TEST_LOCATION );
470 DALI_TEST_EQUALS( gConsoleMessageCallbackCalled, 1, TEST_LOCATION );
471 DALI_TEST_CHECK( signal1 & signal2);
474 DALI_TEST_CHECK(gPageLoadErrorInstance);
475 DALI_TEST_EQUALS(gPageLoadErrorInstance->GetUrl(), TEST_URL1, TEST_LOCATION);
476 DALI_TEST_EQUALS(gPageLoadErrorInstance->GetCode(), Dali::WebEngineLoadError::ErrorCode::UNKNOWN, TEST_LOCATION);
477 std::string testErrorDescription("This is an error.");
478 DALI_TEST_EQUALS(gPageLoadErrorInstance->GetDescription(), testErrorDescription, TEST_LOCATION);
479 DALI_TEST_EQUALS(gPageLoadErrorInstance->GetType(), Dali::WebEngineLoadError::ErrorType::NONE, TEST_LOCATION);
482 DALI_TEST_CHECK(gConsoleMessageInstance);
483 std::string testConsoleSource("source");
484 DALI_TEST_EQUALS(gConsoleMessageInstance->GetSource(), testConsoleSource, TEST_LOCATION);
485 DALI_TEST_EQUALS(gConsoleMessageInstance->GetLine(), 10, TEST_LOCATION);
486 DALI_TEST_EQUALS(gConsoleMessageInstance->GetSeverityLevel(), Dali::WebEngineConsoleMessage::SeverityLevel::EMPTY, TEST_LOCATION);
487 std::string testConsoleText("This is a text.");
488 DALI_TEST_EQUALS(gConsoleMessageInstance->GetText(), testConsoleText, TEST_LOCATION);
491 gPageLoadErrorInstance = nullptr;
492 gConsoleMessageInstance = nullptr;
497 int UtcDaliWebViewTouchAndKeys(void)
499 ToolkitTestApplication application;
501 WebView view = WebView::New();
502 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
503 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
504 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
505 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
507 application.GetScene().Add( view );
508 application.SendNotification();
509 application.Render();
511 view.GetNaturalSize();
512 view.TouchedSignal().Connect( &OnTouched );
515 Dali::Integration::TouchEvent event;
516 Dali::Integration::Point pointDown, pointUp;
518 event = Dali::Integration::TouchEvent();
519 pointDown.SetState( PointState::DOWN );
520 pointDown.SetScreenPosition( Vector2( 10, 10 ) );
521 event.AddPoint( pointDown );
522 application.ProcessEvent( event );
524 event = Dali::Integration::TouchEvent();
525 pointUp.SetState( PointState::UP );
526 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
527 event.AddPoint( pointUp );
528 application.ProcessEvent( event );
531 Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( view );
532 application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) );
533 application.SendNotification();
535 DALI_TEST_CHECK( gTouched );
536 DALI_TEST_CHECK( view );
541 int UtcDaliWebViewFocusGainedAndLost(void)
543 ToolkitTestApplication application;
545 WebView view = WebView::New();
546 DALI_TEST_CHECK( view );
548 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
549 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
550 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
551 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
553 application.GetScene().Add( view );
554 application.SendNotification();
555 application.Render();
557 view.SetKeyInputFocus();
558 DALI_TEST_CHECK( view.HasKeyInputFocus() );
561 view.ClearKeyInputFocus();
562 DALI_TEST_CHECK( !view.HasKeyInputFocus() );
567 int UtcDaliWebViewPropertyPageZoomFactor(void)
569 ToolkitTestApplication application;
571 WebView view = WebView::New();
572 DALI_TEST_CHECK( view );
574 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
575 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
576 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
577 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
579 application.GetScene().Add( view );
580 application.SendNotification();
581 application.Render();
583 view.SetProperty( WebView::Property::PAGE_ZOOM_FACTOR, 1.5f);
584 float zoomFactor = view.GetProperty<float>( WebView::Property::PAGE_ZOOM_FACTOR );
585 DALI_TEST_EQUALS( zoomFactor, 1.5f, TEST_LOCATION );
587 view.SetProperty( WebView::Property::PAGE_ZOOM_FACTOR, 1.0f);
588 zoomFactor = view.GetProperty<float>( WebView::Property::PAGE_ZOOM_FACTOR );
589 DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION );
594 int UtcDaliWebViewPropertyTextZoomFactor(void)
596 ToolkitTestApplication application;
598 WebView view = WebView::New();
599 DALI_TEST_CHECK( view );
601 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
602 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
603 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
604 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
606 application.GetScene().Add( view );
607 application.SendNotification();
608 application.Render();
610 view.SetProperty( WebView::Property::TEXT_ZOOM_FACTOR, 1.5f);
611 float zoomFactor = view.GetProperty<float>( WebView::Property::TEXT_ZOOM_FACTOR );
612 DALI_TEST_EQUALS( zoomFactor, 1.5f, TEST_LOCATION );
614 view.SetProperty( WebView::Property::TEXT_ZOOM_FACTOR, 1.0f);
615 zoomFactor = view.GetProperty<float>( WebView::Property::TEXT_ZOOM_FACTOR );
616 DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION );
621 int UtcDaliWebViewPropertyLoadProgressPercentage(void)
623 ToolkitTestApplication application;
625 WebView view = WebView::New();
626 DALI_TEST_CHECK( view );
628 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
629 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
630 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
631 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
633 application.GetScene().Add( view );
634 application.SendNotification();
635 application.Render();
637 float percentage = view.GetProperty<float>( WebView::Property::LOAD_PROGRESS_PERCENTAGE );
638 DALI_TEST_EQUALS( percentage, 0.5f, TEST_LOCATION );
643 int UtcDaliWebViewMove(void)
645 ToolkitTestApplication application;
647 WebView view = WebView::New();
648 DALI_TEST_CHECK( view );
650 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
651 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
652 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
653 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
655 application.GetScene().Add( view );
656 application.SendNotification();
657 application.Render();
659 view.SetProperty( Actor::Property::POSITION, Vector2( 100, 100 ));
660 Vector3 viewPos = view.GetProperty<Vector3>( Actor::Property::POSITION );
661 DALI_TEST_EQUALS( viewPos, Vector3( 100, 100, 0 ), TEST_LOCATION );
666 int UtcDaliWebViewPropertyVideoHoleEnabled(void)
668 ToolkitTestApplication application;
670 WebView view = WebView::New();
671 DALI_TEST_CHECK( view );
673 const bool kDefaultValue = true;
674 const bool kTestValue = false;
676 // Check default value
678 Property::Value value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
679 DALI_TEST_CHECK( value.Get( output ) );
680 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
682 // Check Set/GetProperty
683 view.SetProperty( WebView::Property::VIDEO_HOLE_ENABLED, kTestValue );
684 value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
685 DALI_TEST_CHECK( value.Get( output ) );
686 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
691 int UtcDaliWebViewPropertyMouseEventsEnabled(void)
693 ToolkitTestApplication application;
695 WebView view = WebView::New();
696 DALI_TEST_CHECK( view );
698 const bool kDefaultValue = true;
699 const bool kTestValue = false;
701 // Check default value
703 Property::Value value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
704 DALI_TEST_CHECK( value.Get( output ) );
705 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
707 // Check Set/GetProperty
708 view.SetProperty( WebView::Property::MOUSE_EVENTS_ENABLED, kTestValue );
709 value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
710 DALI_TEST_CHECK( value.Get( output ) );
711 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
716 int UtcDaliWebViewPropertyKeyEventsEnabled(void)
718 ToolkitTestApplication application;
720 WebView view = WebView::New();
721 DALI_TEST_CHECK( view );
723 const bool kDefaultValue = true;
724 const bool kTestValue = false;
726 // Check default value
728 Property::Value value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
729 DALI_TEST_CHECK( value.Get( output ) );
730 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
732 // Check Set/GetProperty
733 view.SetProperty( WebView::Property::KEY_EVENTS_ENABLED, kTestValue );
734 value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
735 DALI_TEST_CHECK( value.Get( output ) );
736 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
741 int UtcDaliWebViewHoverAndWheel(void)
743 ToolkitTestApplication application;
745 WebView view = WebView::New();
746 DALI_TEST_CHECK( view );
747 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
748 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
749 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
750 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
752 application.GetScene().Add( view );
753 application.SendNotification();
754 application.Render();
756 view.GetNaturalSize();
757 view.HoveredSignal().Connect( &OnHovered );
758 view.WheelEventSignal().Connect( &OnWheelEvent );
761 Dali::Integration::HoverEvent event = Dali::Integration::HoverEvent();
762 Dali::Integration::Point pointDown;
763 pointDown.SetState( PointState::DOWN );
764 pointDown.SetScreenPosition( Vector2( 10, 10 ) );
765 event.AddPoint( pointDown );
766 application.ProcessEvent( event );
768 event = Dali::Integration::HoverEvent();
769 Dali::Integration::Point pointUp;
770 pointUp.SetState( PointState::UP );
771 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
772 event.AddPoint( pointUp );
773 application.ProcessEvent( event );
775 event = Dali::Integration::HoverEvent();
776 Dali::Integration::Point pointMotion;
777 pointUp.SetState( PointState::MOTION );
778 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
779 event.AddPoint( pointMotion );
780 application.ProcessEvent( event );
783 Dali::Integration::WheelEvent wheelEvent;
784 wheelEvent.type = Dali::Integration::WheelEvent::Type::MOUSE_WHEEL;
785 wheelEvent.direction = 0;
786 wheelEvent.point = Vector2( 20, 20 );
787 wheelEvent.delta = 10;
788 application.ProcessEvent( wheelEvent );
789 application.SendNotification();
791 DALI_TEST_CHECK( gHovered );
792 DALI_TEST_CHECK( gWheelEventHandled );
797 int UtcDaliWebViewFormRepostDecisionFrameRendering(void)
799 ToolkitTestApplication application;
801 WebView view = WebView::New();
802 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
803 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
804 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
805 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
806 application.GetScene().Add( view );
807 application.SendNotification();
808 application.Render();
809 DALI_TEST_CHECK( view );
811 ConnectionTracker* testTracker = new ConnectionTracker();
812 view.FormRepostDecisionSignal().Connect(&OnFormRepostDecision);
813 view.FrameRenderedSignal().Connect(&OnFrameRendered);
814 bool signal1 = false;
815 bool signal2 = false;
816 view.ConnectSignal( testTracker, "formRepostDecision", CallbackFunctor(&signal1) );
817 view.ConnectSignal( testTracker, "frameRendered", CallbackFunctor(&signal2) );
818 DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 0, TEST_LOCATION );
819 DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 0, TEST_LOCATION );
821 view.LoadUrl( TEST_URL1 );
822 Test::EmitGlobalTimerSignal();
823 DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 1, TEST_LOCATION );
824 DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 1, TEST_LOCATION );
825 DALI_TEST_CHECK( signal1 & signal2);
827 // form repost decision.
828 DALI_TEST_CHECK(gFormRepostDecisionInstance);
829 gFormRepostDecisionInstance->Reply(true);
832 gFormRepostDecisionInstance = nullptr;
837 int UtcDaliWebViewSslCertificateHttpAuthentication(void)
839 ToolkitTestApplication application;
841 WebView view = WebView::New();
842 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
843 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
844 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
845 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
846 application.GetScene().Add( view );
847 application.SendNotification();
848 application.Render();
849 DALI_TEST_CHECK( view );
851 ConnectionTracker* testTracker = new ConnectionTracker();
852 view.CertificateConfirmSignal().Connect(&OnCertificateConfirm);
853 view.SslCertificateChangedSignal().Connect(&OnSslCertificateChanged);
854 view.HttpAuthHandlerSignal().Connect(&OnHttpAuthHandler);
855 bool signal1 = false;
856 bool signal2 = false;
857 bool signal3 = false;
858 view.ConnectSignal( testTracker, "certificateConfirm", CallbackFunctor(&signal1) );
859 view.ConnectSignal( testTracker, "sslCertificateChanged", CallbackFunctor(&signal2) );
860 view.ConnectSignal( testTracker, "httpAuthRequest", CallbackFunctor(&signal3) );
861 DALI_TEST_EQUALS( gCertificateConfirmCallbackCalled, 0, TEST_LOCATION );
862 DALI_TEST_EQUALS( gSslCertificateChangedCallbackCalled, 0, TEST_LOCATION );
863 DALI_TEST_EQUALS( gHttpAuthHandlerCallbackCalled, 0, TEST_LOCATION );
865 view.LoadUrl( TEST_URL1 );
866 Test::EmitGlobalTimerSignal();
867 DALI_TEST_EQUALS( gCertificateConfirmCallbackCalled, 1, TEST_LOCATION );
868 DALI_TEST_EQUALS( gSslCertificateChangedCallbackCalled, 1, TEST_LOCATION );
869 DALI_TEST_EQUALS( gHttpAuthHandlerCallbackCalled, 1, TEST_LOCATION );
870 DALI_TEST_CHECK( signal1 & signal2 & signal3);
873 DALI_TEST_CHECK(gCertificateConfirmInstance);
874 gCertificateConfirmInstance->Allow(true);
875 DALI_TEST_CHECK(gCertificateConfirmInstance->IsFromMainFrame());
877 DALI_TEST_CHECK(gSslCertificateInstance);
878 DALI_TEST_EQUALS(gSslCertificateInstance->GetPem(), "abc", TEST_LOCATION);
879 DALI_TEST_CHECK(gSslCertificateInstance->IsContextSecure());
881 // http authentication.
882 DALI_TEST_CHECK(gHttpAuthInstance);
883 gHttpAuthInstance->Suspend();
884 gHttpAuthInstance->UseCredential("", "");
885 gHttpAuthInstance->CancelCredential();
886 DALI_TEST_EQUALS(gHttpAuthInstance->GetRealm(), "test", TEST_LOCATION);
889 gCertificateConfirmInstance = nullptr;
890 gSslCertificateInstance = nullptr;
891 gHttpAuthInstance = nullptr;
896 int UtcDaliWebViewGetWebBackForwardList(void)
898 ToolkitTestApplication application;
900 WebView view = WebView::New();
901 DALI_TEST_CHECK( view );
903 Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
904 DALI_TEST_CHECK( bfList != 0 );
909 int UtcDaliWebViewGetWebContext(void)
911 ToolkitTestApplication application;
913 WebView view = WebView::New();
914 DALI_TEST_CHECK( view );
916 Dali::Toolkit::WebContext* context = view.GetContext();
917 DALI_TEST_CHECK( context != 0 );
922 int UtcDaliWebViewGetWebCookieManager(void)
924 ToolkitTestApplication application;
926 WebView view = WebView::New();
927 DALI_TEST_CHECK( view );
929 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
930 DALI_TEST_CHECK( cookieManager != 0 );
935 int UtcDaliWebViewGetWebSettings(void)
937 ToolkitTestApplication application;
939 WebView view = WebView::New();
940 DALI_TEST_CHECK( view );
942 Dali::Toolkit::WebSettings* settings = view.GetSettings();
943 DALI_TEST_CHECK( settings != 0 );
948 int UtcDaliWebViewProperty1(void)
951 ToolkitTestApplication application;
953 WebView view = WebView::New();
954 DALI_TEST_CHECK( view );
957 view.SetProperty( WebView::Property::URL, TEST_URL1 );
958 Property::Value val = view.GetProperty( WebView::Property::URL );
959 DALI_TEST_CHECK( val.Get( local ) );
960 DALI_TEST_EQUALS( local, TEST_URL1, TEST_LOCATION );
965 int UtcDaliWebViewProperty4(void)
968 ToolkitTestApplication application;
970 WebView view = WebView::New();
971 DALI_TEST_CHECK( view );
973 const std::string kDefaultValue;
974 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";
976 // Check default value
978 Property::Value value = view.GetProperty( WebView::Property::USER_AGENT );
979 DALI_TEST_CHECK( value.Get( output ) );
980 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
982 // Check Set/GetProperty
983 view.SetProperty( WebView::Property::USER_AGENT, kTestValue );
984 value = view.GetProperty( WebView::Property::USER_AGENT );
985 DALI_TEST_CHECK( value.Get( output ) );
986 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
991 int UtcDaliWebViewProperty9(void)
994 ToolkitTestApplication application;
996 WebView view = WebView::New();
997 DALI_TEST_CHECK( view );
999 // Check default value
1000 Dali::Vector2 output = Dali::Vector2::ONE;
1001 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1002 DALI_TEST_CHECK( output.x == 0 && output.y == 0 );
1004 // Check Set/GetProperty
1005 Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
1006 view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
1007 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1008 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
1010 // Check default value of scroll size
1011 output = Dali::Vector2::ONE;
1012 view.GetProperty( WebView::Property::SCROLL_SIZE ).Get( output );
1013 DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
1015 // Check default value of content size
1016 output = Dali::Vector2::ONE;
1017 view.GetProperty( WebView::Property::CONTENT_SIZE ).Get( output );
1018 DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
1023 int UtcDaliWebViewPropertyBackgroundColorSelectedTextEtc(void)
1025 ToolkitTestApplication application;
1027 WebView view = WebView::New();
1028 DALI_TEST_CHECK( view );
1030 Dali::Vector4 testValue = Dali::Vector4(0.0f, 0.0f, 0.0f, 0.0f);
1031 view.SetProperty(WebView::Property::DOCUMENT_BACKGROUND_COLOR, testValue);
1032 view.SetProperty(WebView::Property::TILES_CLEARED_WHEN_HIDDEN, true);
1033 view.SetProperty(WebView::Property::TILE_COVER_AREA_MULTIPLIER, 1.0f);
1034 view.SetProperty(WebView::Property::CURSOR_ENABLED_BY_CLIENT, true);
1036 // Check default value
1037 std::string testText("test");
1039 view.GetProperty(WebView::Property::SELECTED_TEXT).Get(output);
1040 DALI_TEST_EQUALS(output, testText, TEST_LOCATION);
1045 int UtcDaliWebViewPropertyTitleFavicon(void)
1047 ToolkitTestApplication application;
1049 char argv[] = "--test";
1050 WebView view = WebView::New( 1, (char**)&argv );
1051 DALI_TEST_CHECK( view );
1054 view.ClearAllTilesResources();
1056 // Check default value of title
1057 std::string testValue("title");
1059 view.GetProperty( WebView::Property::TITLE ).Get( output );
1060 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
1062 // Check the case that favicon is not null.
1063 Dali::Toolkit::ImageView favicon = view.GetFavicon();
1064 DALI_TEST_CHECK( favicon );
1065 Dali::Vector3 iconsize = favicon.GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
1066 DALI_TEST_CHECK( ( int )iconsize.width == 2 && ( int )iconsize.height == 2 );
1068 // Check the case that favicon is null.
1069 favicon = view.GetFavicon();
1070 DALI_TEST_CHECK( !favicon );
1075 int UtcDaliWebViewContextMenuCustomizedAndItemSelected(void)
1077 ToolkitTestApplication application;
1079 WebView view = WebView::New();
1080 DALI_TEST_CHECK( view );
1083 ConnectionTracker* testTracker = new ConnectionTracker();
1084 view.ContextMenuCustomizedSignal().Connect( &OnContextMenuCustomized );
1085 view.ContextMenuItemSelectedSignal().Connect( &OnContextMenuItemSelected );
1086 bool signal1 = false;
1087 bool signal2 = false;
1088 view.ConnectSignal( testTracker, "contextMenuCustomized", CallbackFunctor(&signal1) );
1089 view.ConnectSignal( testTracker, "contextMenuItemSelected", CallbackFunctor(&signal2) );
1090 DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 0, TEST_LOCATION );
1091 DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 0, TEST_LOCATION );
1092 DALI_TEST_CHECK(gContextMenuInstance == 0);
1093 DALI_TEST_CHECK(gContextMenuItemInstance == 0);
1095 view.LoadUrl( TEST_URL1 );
1096 Test::EmitGlobalTimerSignal();
1097 DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 1, TEST_LOCATION );
1098 DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 1, TEST_LOCATION );
1099 DALI_TEST_CHECK( signal1 );
1100 DALI_TEST_CHECK( signal2 );
1102 // check context meun & its items.
1103 DALI_TEST_CHECK(gContextMenuInstance != 0);
1104 std::unique_ptr<Dali::WebEngineContextMenuItem> item = gContextMenuInstance->GetItemAt(0);
1105 DALI_TEST_CHECK(item.get() != 0);
1106 std::vector<std::unique_ptr<Dali::WebEngineContextMenuItem>> itemList = gContextMenuInstance->GetItemList();
1107 DALI_TEST_CHECK(itemList.size() == 1);
1108 Dali::Vector2 testPosition = Dali::Vector2(100, 100);
1109 DALI_TEST_EQUALS(gContextMenuInstance->GetPosition(), testPosition, TEST_LOCATION);
1110 DALI_TEST_CHECK(gContextMenuInstance->RemoveItem(*(item.get())));
1111 DALI_TEST_CHECK(gContextMenuInstance->AppendItemAsAction(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", false));
1112 DALI_TEST_CHECK(gContextMenuInstance->AppendItem(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", "", false));
1113 DALI_TEST_CHECK(gContextMenuInstance->SelectItem(*(item.get())));
1114 DALI_TEST_CHECK(gContextMenuInstance->Hide());
1116 DALI_TEST_CHECK(gContextMenuItemInstance != 0);
1117 Dali::WebEngineContextMenuItem::ItemTag testItemTag = Dali::WebEngineContextMenuItem::ItemTag::NO_ACTION;
1118 DALI_TEST_EQUALS(gContextMenuItemInstance->GetTag(), testItemTag, TEST_LOCATION);
1119 Dali::WebEngineContextMenuItem::ItemType testItemType = Dali::WebEngineContextMenuItem::ItemType::ACTION;
1120 DALI_TEST_EQUALS(gContextMenuItemInstance->GetType(), testItemType, TEST_LOCATION);
1121 DALI_TEST_CHECK(gContextMenuItemInstance->IsEnabled());
1122 std::string testLinkUrl("http://test.html");
1123 DALI_TEST_EQUALS(gContextMenuItemInstance->GetLinkUrl(), testLinkUrl, TEST_LOCATION);
1124 std::string testImageUrl("http://test.jpg");
1125 DALI_TEST_EQUALS(gContextMenuItemInstance->GetImageUrl(), testImageUrl, TEST_LOCATION);
1126 std::string testTitle("title");
1127 DALI_TEST_EQUALS(gContextMenuItemInstance->GetTitle(), testTitle, TEST_LOCATION);
1128 DALI_TEST_CHECK(gContextMenuItemInstance->GetParentMenu().get() == 0);
1130 gContextMenuInstance = nullptr;
1131 gContextMenuItemInstance = nullptr;
1136 int UtcDaliWebViewScrollBy(void)
1138 ToolkitTestApplication application;
1140 WebView view = WebView::New();
1141 DALI_TEST_CHECK( view );
1144 ConnectionTracker* testTracker = new ConnectionTracker();
1145 view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
1146 bool signal1 = false;
1147 view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
1148 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
1150 view.LoadUrl( TEST_URL1 );
1151 Test::EmitGlobalTimerSignal();
1153 // set scroll position.
1154 Dali::Vector2 output = Dali::Vector2::ONE;
1155 Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
1156 view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
1157 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1158 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
1160 // scroll by and trigger scrollEdgeReached event.
1161 view.ScrollBy( 50, 50 );
1162 Test::EmitGlobalTimerSignal();
1164 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1165 DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
1166 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
1167 DALI_TEST_CHECK( signal1 );
1169 // scroll by and trigger scrollEdgeReached event.
1170 bool result = view.ScrollEdgeBy( 50, 50 );
1171 DALI_TEST_CHECK( result );
1172 Test::EmitGlobalTimerSignal();
1174 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1175 DALI_TEST_CHECK( output.x == 200 && output.y == 200 );
1176 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 2, TEST_LOCATION );
1177 DALI_TEST_CHECK( signal1 );
1182 int UtcDaliWebViewSetGetScaleFactorActivateAccessibility(void)
1184 ToolkitTestApplication application;
1186 WebView view = WebView::New();
1187 DALI_TEST_CHECK( view );
1189 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1190 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1191 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1192 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1194 application.GetScene().Add( view );
1195 application.SendNotification();
1196 application.Render();
1198 view.ActivateAccessibility(true);
1199 view.AddDynamicCertificatePath("host", "test/to/path");
1200 bool found = view.HighlightText("test", Dali::WebEnginePlugin::FindOption::CASE_INSENSITIVE, 2);
1201 DALI_TEST_CHECK( found );
1203 view.SetScaleFactor(1.5f, Dali::Vector2(0.0f, 0.0f));
1204 float result = view.GetScaleFactor();
1205 DALI_TEST_EQUALS( result, 1.5f, TEST_LOCATION );
1207 view.SetScaleFactor(1.0f, Dali::Vector2(0.0f, 0.0f));
1208 result = view.GetScaleFactor();
1209 DALI_TEST_EQUALS( result, 1.0f, TEST_LOCATION );
1214 int UtcDaliWebViewGetScreenshotSyncAndAsync(void)
1217 ToolkitTestApplication application;
1219 char argv[] = "--test";
1220 WebView view = WebView::New( 1, (char**)&argv );
1221 DALI_TEST_CHECK( view );
1223 // Check GetScreenshot
1224 Dali::Rect<int> viewArea;
1227 viewArea.width = 10;
1228 viewArea.height = 10;
1229 Dali::Toolkit::ImageView screenshot = view.GetScreenshot(viewArea, 1.0f);
1230 DALI_TEST_CHECK( screenshot );
1231 Dali::Vector3 shotsize = screenshot.GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
1232 DALI_TEST_CHECK( ( int )shotsize.width == viewArea.width && ( int )shotsize.height == viewArea.height );
1234 // Check GetScreenshotAsynchronously
1237 viewArea.width = 100;
1238 viewArea.height = 100;
1239 bool result = view.GetScreenshotAsynchronously(viewArea, 1.0f, &OnScreenshotCaptured);
1240 DALI_TEST_CHECK( result );
1242 Test::EmitGlobalTimerSignal();
1244 Test::EmitGlobalTimerSignal();
1245 DALI_TEST_EQUALS( gScreenshotCapturedCallbackCalled, 1, TEST_LOCATION );
1250 int UtcDaliWebViewVideoPlayingGeolocationPermission(void)
1253 ToolkitTestApplication application;
1255 char argv[] = "--test";
1256 WebView view = WebView::New( 1, (char**)&argv );
1257 DALI_TEST_CHECK( view );
1259 // Check CheckVideoPlayingAsynchronously
1260 bool result = view.CheckVideoPlayingAsynchronously(&OnVideoPlaying);
1261 DALI_TEST_CHECK( result );
1262 Test::EmitGlobalTimerSignal();
1263 DALI_TEST_EQUALS( gVideoPlayingCallbackCalled, 1, TEST_LOCATION );
1265 // Check RegisterGeolocationPermissionCallback
1266 view.RegisterGeolocationPermissionCallback(&OnGeolocationPermission);
1267 Test::EmitGlobalTimerSignal();
1268 DALI_TEST_EQUALS( gGeolocationPermissionCallbackCalled, 1, TEST_LOCATION );
1273 int UtcDaliWebViewHttpRequestInterceptor(void)
1275 ToolkitTestApplication application;
1277 WebView view = WebView::New();
1278 DALI_TEST_CHECK( view );
1281 ConnectionTracker* testTracker = new ConnectionTracker();
1282 view.RequestInterceptorSignal().Connect( &OnRequestInterceptor );
1283 bool signal1 = false;
1284 view.ConnectSignal( testTracker, "requestInterceptor", CallbackFunctor(&signal1) );
1285 DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 0, TEST_LOCATION );
1286 DALI_TEST_CHECK(gRequestInterceptorInstance == 0);
1288 view.LoadUrl( TEST_URL1 );
1289 Test::EmitGlobalTimerSignal();
1290 DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 1, TEST_LOCATION );
1291 DALI_TEST_CHECK( signal1 );
1293 // check request interceptor.
1294 DALI_TEST_CHECK(gRequestInterceptorInstance != 0);
1295 DALI_TEST_CHECK(gRequestInterceptorInstance->Ignore());
1296 DALI_TEST_CHECK(gRequestInterceptorInstance->SetResponseStatus(400, "error"));
1297 DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseHeader("key", "value"));
1298 DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseBody("test", 4));
1299 std::string testUrl("http://test.html");
1300 DALI_TEST_EQUALS(gRequestInterceptorInstance->GetUrl(), testUrl, TEST_LOCATION);
1302 gRequestInterceptorInstance = nullptr;
1307 int UtcDaliWebViewResponsePolicyDecisionRequest(void)
1309 ToolkitTestApplication application;
1311 WebView view = WebView::New();
1312 DALI_TEST_CHECK( view );
1315 ConnectionTracker* testTracker = new ConnectionTracker();
1316 view.ResponsePolicyDecisionSignal().Connect( &OnResponsePolicyDecided );
1317 bool signal1 = false;
1318 view.ConnectSignal( testTracker, "responsePolicyDecided", CallbackFunctor(&signal1) );
1319 DALI_TEST_EQUALS( gResponsePolicyDecidedCallbackCalled, 0, TEST_LOCATION );
1320 DALI_TEST_CHECK(gResponsePolicyDecisionInstance == 0);
1322 view.LoadUrl( TEST_URL1 );
1323 Test::EmitGlobalTimerSignal();
1324 DALI_TEST_EQUALS( gResponsePolicyDecidedCallbackCalled, 1, TEST_LOCATION );
1325 DALI_TEST_CHECK( signal1 );
1327 // check response policy decision & its frame.
1328 DALI_TEST_CHECK(gResponsePolicyDecisionInstance != 0);
1329 std::string testUrl("http://test.html");
1330 DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetUrl(), testUrl, TEST_LOCATION);
1331 std::string testCookie("test:abc");
1332 DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetCookie(), testCookie, TEST_LOCATION);
1333 Dali::WebEnginePolicyDecision::DecisionType testDecisionType = Dali::WebEnginePolicyDecision::DecisionType::USE;
1334 DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetDecisionType(), testDecisionType, TEST_LOCATION);
1335 std::string testResponseMime("txt/xml");
1336 DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetResponseMime(), testResponseMime, TEST_LOCATION);
1337 int32_t ResponseStatusCode = 500;
1338 DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetResponseStatusCode(), ResponseStatusCode, TEST_LOCATION);
1339 Dali::WebEnginePolicyDecision::NavigationType testNavigationType = Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
1340 DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetNavigationType(), testNavigationType, TEST_LOCATION);
1341 std::string testScheme("test");
1342 DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetScheme(), testScheme, TEST_LOCATION);
1343 DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Use());
1344 DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Ignore());
1345 DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Suspend());
1347 Dali::WebEngineFrame* webFrame = &(gResponsePolicyDecisionInstance->GetFrame());
1348 DALI_TEST_CHECK(webFrame);
1349 DALI_TEST_CHECK(webFrame->IsMainFrame());
1351 gResponsePolicyDecisionInstance = nullptr;
1356 int UtcDaliWebViewHitTest(void)
1358 ToolkitTestApplication application;
1360 WebView view = WebView::New();
1361 DALI_TEST_CHECK( view );
1364 view.LoadUrl( TEST_URL1 );
1367 std::unique_ptr<Dali::WebEngineHitTest> hitTest = view.CreateHitTest(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT);
1368 DALI_TEST_CHECK(hitTest != 0);
1369 DALI_TEST_EQUALS(hitTest->GetResultContext(), Dali::WebEngineHitTest::ResultContext::DOCUMENT, TEST_LOCATION);
1370 std::string testLinkUri("http://test.html");
1371 DALI_TEST_EQUALS(hitTest->GetLinkUri(), testLinkUri, TEST_LOCATION);
1372 std::string testLinkTitle("test");
1373 DALI_TEST_EQUALS(hitTest->GetLinkTitle(), testLinkTitle, TEST_LOCATION);
1374 std::string testLinkLabel("label");
1375 DALI_TEST_EQUALS(hitTest->GetLinkLabel(), testLinkLabel, TEST_LOCATION);
1376 std::string testImageUri("http://test.jpg");
1377 DALI_TEST_EQUALS(hitTest->GetImageUri(), testImageUri, TEST_LOCATION);
1378 std::string testMediaUri("http://test.mp4");
1379 DALI_TEST_EQUALS(hitTest->GetMediaUri(), testMediaUri, TEST_LOCATION);
1380 std::string testTagName("img");
1381 DALI_TEST_EQUALS(hitTest->GetTagName(), testTagName, TEST_LOCATION);
1382 std::string testNodeValue("test");
1383 DALI_TEST_EQUALS(hitTest->GetNodeValue(), testNodeValue, TEST_LOCATION);
1384 Dali::Property::Map* testMap = &hitTest->GetAttributes();
1385 DALI_TEST_CHECK(testMap);
1386 std::string testImageFileNameExtension("jpg");
1387 DALI_TEST_EQUALS(hitTest->GetImageFileNameExtension(), testImageFileNameExtension, TEST_LOCATION);
1388 Dali::PixelData testImageBuffer = hitTest->GetImageBuffer();
1389 DALI_TEST_CHECK((int)testImageBuffer.GetWidth() == 2 && (int)testImageBuffer.GetHeight() == 2);
1392 bool result = view.CreateHitTestAsynchronously(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT, &OnHitTestCreated);
1393 DALI_TEST_CHECK(result);
1394 Test::EmitGlobalTimerSignal();
1395 DALI_TEST_EQUALS( gHitTestCreatedCallbackCalled, 1, TEST_LOCATION );
1400 int UtcDaliWebViewEvaluteJavaScript(void)
1402 ToolkitTestApplication application;
1404 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1406 view.LoadHtmlString( "<body>Hello World!</body>" );
1407 view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
1408 view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript );
1409 Test::EmitGlobalTimerSignal();
1411 DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION );
1416 int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void)
1418 ToolkitTestApplication application;
1420 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1422 view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert );
1423 view.LoadHtmlString( "<head><script type='text/javascript'>alert('this is an alert popup.');</script></head><body>Hello World!</body>" );
1424 view.JavaScriptAlertReply();
1425 Test::EmitGlobalTimerSignal();
1426 DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION );
1428 view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm );
1429 view.LoadHtmlString( "<head><script type='text/javascript'>confirm('this is a confirm popup.');</script></head><body>Hello World!</body>" );
1430 view.JavaScriptConfirmReply( true );
1431 Test::EmitGlobalTimerSignal();
1432 DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION );
1434 view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt );
1435 view.LoadHtmlString( "<head><script type='text/javascript'>prompt('this is a prompt popup.');</script></head><body>Hello World!</body>" );
1436 view.JavaScriptPromptReply( "it is a prompt." );
1437 Test::EmitGlobalTimerSignal();
1438 DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION );
1443 int UtcDaliWebViewLoadHtmlStringOverrideCurrentEntryAndContents(void)
1445 ToolkitTestApplication application;
1447 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1448 DALI_TEST_CHECK( view );
1450 std::string html("<body>Hello World!</body>");
1451 std::string basicUri("http://basicurl");
1452 std::string unreachableUrl("http://unreachableurl");
1453 bool result = view.LoadHtmlStringOverrideCurrentEntry( html, basicUri, unreachableUrl );
1454 DALI_TEST_CHECK( result );
1456 application.SendNotification();
1457 application.Render();
1458 Test::EmitGlobalTimerSignal();
1460 result = view.LoadContents( html, html.length(), "html/text", "utf-8", basicUri );
1461 DALI_TEST_CHECK( result );
1466 int UtcDaliWebViewReloadSuspendResumeNetworkLoadingCustomHeader(void)
1468 ToolkitTestApplication application;
1470 WebView view = WebView::New();
1471 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1472 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1473 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1474 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1476 application.GetScene().Add( view );
1477 application.SendNotification();
1478 application.Render();
1479 DALI_TEST_CHECK( view );
1481 view.LoadUrl( "http://test.html" );
1482 bool result = view.AddCustomHeader("key", "value");
1483 DALI_TEST_CHECK( result );
1485 result = view.ReloadWithoutCache();
1486 DALI_TEST_CHECK( result );
1488 uint32_t portNumber = view.StartInspectorServer(5000);
1489 DALI_TEST_EQUALS( portNumber, 5000, TEST_LOCATION );
1491 application.SendNotification();
1492 application.Render();
1493 Test::EmitGlobalTimerSignal();
1495 result = view.StopInspectorServer();
1496 DALI_TEST_CHECK( result );
1498 view.SuspendNetworkLoading();
1500 result = view.RemoveCustomHeader("key");
1501 DALI_TEST_CHECK( result );
1503 view.ResumeNetworkLoading();
1508 int UtcDaliWebViewMethodsForCoverage(void)
1510 ToolkitTestApplication application;
1512 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1514 view.LoadHtmlString( "<body>Hello World!</body>" );
1515 view.AddJavaScriptMessageHandler( "jsObject",
1516 []( const std::string& arg ) {
1520 DALI_TEST_CHECK( view );
1525 // test cases for web backforward list.
1527 int UtcDaliWebBackForwardListCheckItem(void)
1529 ToolkitTestApplication application;
1531 WebView view = WebView::New();
1532 DALI_TEST_CHECK( view );
1534 Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
1535 DALI_TEST_CHECK( bfList != 0 )
1537 unsigned int itemCount = bfList->GetItemCount();
1538 DALI_TEST_CHECK( itemCount == 1 )
1540 std::unique_ptr<Dali::WebEngineBackForwardListItem> citem = bfList->GetCurrentItem();
1541 DALI_TEST_CHECK( citem != 0 );
1543 std::unique_ptr<Dali::WebEngineBackForwardListItem> citemP = bfList->GetPreviousItem();
1544 DALI_TEST_CHECK( citemP != 0 );
1546 std::unique_ptr<Dali::WebEngineBackForwardListItem> citemN = bfList->GetNextItem();
1547 DALI_TEST_CHECK( citemN != 0 );
1549 const std::string kDefaultUrl( "http://url" );
1550 std::string testValue = citem->GetUrl();
1551 DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION );
1553 const std::string kDefaultTitle( "title" );
1554 testValue = citem->GetTitle();
1555 DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION );
1557 const std::string kDefaultOriginalUrl( "http://originalurl" );
1558 testValue = citem->GetOriginalUrl();
1559 DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION );
1561 std::unique_ptr<Dali::WebEngineBackForwardListItem> item = bfList->GetItemAtIndex( 0 );
1562 DALI_TEST_CHECK( item != 0 );
1564 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vecBack = bfList->GetBackwardItems(-1);
1565 DALI_TEST_CHECK( vecBack.size() == 1 );
1567 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vecForward = bfList->GetForwardItems(-1);
1568 DALI_TEST_CHECK( vecForward.size() == 1 );
1573 // test cases for web context.
1575 int UtcDaliWebContextGetSetCacheModel(void)
1577 ToolkitTestApplication application;
1579 WebView view = WebView::New();
1580 DALI_TEST_CHECK( view );
1582 Dali::Toolkit::WebContext* context = view.GetContext();
1583 DALI_TEST_CHECK( context != 0 )
1585 std::string kDefaultValue;
1588 context->SetProxyUri( kDefaultValue );
1589 context->SetCertificateFilePath( kDefaultValue );
1590 context->EnableCache( true );
1591 context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
1592 context->DeleteAllWebDatabase();
1593 context->DeleteAllWebStorage();
1594 context->DeleteLocalFileSystem();
1595 context->ClearCache();
1596 context->SetContextAppId( "id" );
1597 context->SetContextApplicationType( Dali::WebEngineContext::ApplicationType::OTHER );
1598 context->SetContextTimeOffset( 0 );
1599 context->SetContextTimeZoneOffset( 0, 0 );
1600 context->SetDefaultZoomFactor( 0 );
1601 context->DeleteAllFormPasswordData();
1602 context->DeleteAllFormCandidateData();
1604 // Check default value
1605 Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
1606 DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
1608 // Check Set/GetProperty
1609 context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1610 value = context->GetCacheModel();
1611 DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1613 // Get cache enabled
1614 DALI_TEST_CHECK( context->IsCacheEnabled() );
1617 std::string str = context->GetContextCertificateFile();
1618 DALI_TEST_EQUALS( str, "test", TEST_LOCATION );
1621 DALI_TEST_CHECK( context->SetContextAppVersion( "test" ) );
1624 std::vector<std::string> temp;
1625 context->RegisterUrlSchemesAsCorsEnabled( temp );
1626 context->RegisterJsPluginMimeTypes( temp );
1627 context->DeleteFormPasswordDataList( temp );
1630 DALI_TEST_EQUALS( context->GetContextDefaultZoomFactor(), float( 0 ), TEST_LOCATION );
1632 // Delete cache and database
1633 DALI_TEST_CHECK( context->DeleteAllApplicationCache() );
1634 DALI_TEST_CHECK( context->DeleteAllWebIndexedDatabase() );
1637 context->SetContextProxy("", "");
1638 DALI_TEST_EQUALS( context->GetContextProxy(), "test", TEST_LOCATION );
1639 DALI_TEST_EQUALS( context->GetProxyBypassRule(), "test", TEST_LOCATION );
1642 DALI_TEST_CHECK( context->FreeUnusedMemory() );
1647 int UtcDaliWebContextGetWebDatabaseStorageOrigins(void)
1649 ToolkitTestApplication application;
1651 WebView view = WebView::New();
1652 DALI_TEST_CHECK( view );
1654 Dali::Toolkit::WebContext* context = view.GetContext();
1655 DALI_TEST_CHECK( context != 0 )
1657 std::string kDefaultValue;
1659 // get origins of web database
1660 bool result = context->GetWebDatabaseOrigins(&OnSecurityOriginsAcquired);
1661 DALI_TEST_CHECK( result );
1663 Test::EmitGlobalTimerSignal();
1664 DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 1, TEST_LOCATION );
1665 DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1667 Dali::WebEngineSecurityOrigin* origin = gSecurityOriginList[0].get();
1668 DALI_TEST_CHECK( origin );
1670 result = context->DeleteWebDatabase(*origin);
1671 DALI_TEST_CHECK( result );
1673 // get origins of web storage
1674 result = context->GetWebStorageOrigins(&OnSecurityOriginsAcquired);
1675 DALI_TEST_CHECK( result );
1677 Test::EmitGlobalTimerSignal();
1678 DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 2, TEST_LOCATION );
1679 DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1681 origin = gSecurityOriginList[0].get();
1682 DALI_TEST_CHECK( origin );
1684 result = context->GetWebStorageUsageForOrigin(*origin, &OnStorageUsageAcquired);
1685 DALI_TEST_CHECK( result );
1686 Test::EmitGlobalTimerSignal();
1687 DALI_TEST_EQUALS( gStorageUsageAcquiredCallbackCalled, 1, TEST_LOCATION );
1689 result = context->DeleteWebStorage(*origin);
1690 DALI_TEST_CHECK( result );
1692 result = context->DeleteApplicationCache(*origin);
1693 DALI_TEST_CHECK( result );
1695 // form passwords, download state, mime type.
1696 context->GetFormPasswordList(&OnFormPasswordsAcquired);
1697 Test::EmitGlobalTimerSignal();
1698 DALI_TEST_EQUALS(gFormPasswordsAcquiredCallbackCalled, 1, TEST_LOCATION);
1699 DALI_TEST_CHECK(gPasswordDataList.size() == 1);
1700 DALI_TEST_EQUALS(gPasswordDataList[0]->url, "http://test.html", TEST_LOCATION);
1701 DALI_TEST_CHECK(gPasswordDataList[0]->useFingerprint == false);
1703 context->RegisterDownloadStartedCallback(&OnDownloadStarted);
1704 Test::EmitGlobalTimerSignal();
1705 DALI_TEST_EQUALS(gDownloadStartedCallbackCalled, 1, TEST_LOCATION);
1707 context->RegisterMimeOverriddenCallback(&OnMimeOverridden);
1708 Test::EmitGlobalTimerSignal();
1709 DALI_TEST_EQUALS(gMimeOverriddenCallbackCalled, 1, TEST_LOCATION);
1711 gSecurityOriginList.clear();
1712 gPasswordDataList.clear();
1717 // test cases for web cookie manager.
1719 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
1721 ToolkitTestApplication application;
1723 WebView view = WebView::New();
1724 DALI_TEST_CHECK( view );
1726 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1727 DALI_TEST_CHECK( cookieManager != 0 )
1729 const std::string kDefaultValue;
1732 cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
1733 cookieManager->ClearCookies();
1735 // Check default value
1736 Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
1737 DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
1739 // Check Set/GetProperty
1740 cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1741 value = cookieManager->GetCookieAcceptPolicy();
1742 DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1747 int UtcDaliWebCookieManagerChangesWatch(void)
1749 ToolkitTestApplication application;
1751 WebView view = WebView::New();
1752 DALI_TEST_CHECK( view );
1754 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1755 DALI_TEST_CHECK( cookieManager != 0 )
1757 cookieManager->ChangesWatch(&OnChangesWatch);
1758 Test::EmitGlobalTimerSignal();
1759 DALI_TEST_EQUALS( gCookieManagerChangsWatchCallbackCalled, 1, TEST_LOCATION );
1764 // test cases for web settings.
1766 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
1768 ToolkitTestApplication application;
1770 WebView view = WebView::New();
1771 DALI_TEST_CHECK( view );
1773 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1774 DALI_TEST_CHECK( settings != 0 )
1777 settings->AllowMixedContents( false );
1778 settings->EnableSpatialNavigation( false );
1779 settings->EnableWebSecurity( false );
1780 settings->EnableCacheBuilder( false );
1781 settings->EnableDoNotTrack( false );
1782 settings->UseScrollbarThumbFocusNotifications( false );
1783 settings->AllowFileAccessFromExternalUrl( false );
1784 settings->AllowScriptsOpenWindows( false );
1786 // Check default value
1787 int value = settings->GetDefaultFontSize();
1788 DALI_TEST_CHECK( value == 16 );
1790 // Check Set/GetProperty
1791 settings->SetDefaultFontSize( 20 );
1792 value = settings->GetDefaultFontSize();
1793 DALI_TEST_CHECK( value == 20 );
1798 int UtcDaliWebSettingsCheckEnableJavaScript(void)
1800 ToolkitTestApplication application;
1802 WebView view = WebView::New();
1803 DALI_TEST_CHECK( view );
1805 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1806 DALI_TEST_CHECK( settings != 0 )
1809 settings->AllowMixedContents( false );
1810 settings->EnableSpatialNavigation( false );
1811 settings->EnableWebSecurity( false );
1812 settings->EnableCacheBuilder( false );
1813 settings->EnableDoNotTrack( false );
1814 settings->UseScrollbarThumbFocusNotifications( false );
1815 settings->AllowFileAccessFromExternalUrl( false );
1816 settings->AllowScriptsOpenWindows( false );
1818 // Check default value is true or not
1819 bool value = settings->IsJavaScriptEnabled();
1820 DALI_TEST_CHECK( value );
1822 // Check Set/GetProperty
1823 settings->EnableJavaScript( false );
1824 value = settings->IsJavaScriptEnabled();
1825 DALI_TEST_CHECK( !value );
1830 int UtcDaliWebSettingsCheckEnableAutoFitting(void)
1832 ToolkitTestApplication application;
1834 WebView view = WebView::New();
1835 DALI_TEST_CHECK( view );
1837 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1838 DALI_TEST_CHECK( settings != 0 )
1841 settings->AllowMixedContents( false );
1842 settings->EnableSpatialNavigation( false );
1843 settings->EnableWebSecurity( false );
1844 settings->EnableCacheBuilder( false );
1845 settings->EnableDoNotTrack( false );
1846 settings->UseScrollbarThumbFocusNotifications( false );
1847 settings->AllowFileAccessFromExternalUrl( false );
1848 settings->AllowScriptsOpenWindows( false );
1850 // Check default value is true or not
1851 bool value = settings->IsAutoFittingEnabled();
1852 DALI_TEST_CHECK( value );
1854 // Check Set/GetProperty
1855 settings->EnableAutoFitting( false );
1856 value = settings->IsAutoFittingEnabled();
1857 DALI_TEST_CHECK( !value );
1862 int UtcDaliWebSettingsCheckEnablePlugins(void)
1864 ToolkitTestApplication application;
1866 WebView view = WebView::New();
1867 DALI_TEST_CHECK( view );
1869 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1870 DALI_TEST_CHECK( settings != 0 )
1873 settings->AllowMixedContents( false );
1874 settings->EnableSpatialNavigation( false );
1875 settings->EnableWebSecurity( false );
1876 settings->EnableCacheBuilder( false );
1877 settings->EnableDoNotTrack( false );
1878 settings->UseScrollbarThumbFocusNotifications( false );
1879 settings->AllowFileAccessFromExternalUrl( false );
1880 settings->AllowScriptsOpenWindows( false );
1882 // Check default value is true or not
1883 bool value = settings->ArePluginsEnabled();
1884 DALI_TEST_CHECK( value );
1886 // Check Set/GetProperty
1887 settings->EnablePlugins( false );
1888 value = settings->ArePluginsEnabled();
1889 DALI_TEST_CHECK( !value );
1894 int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void)
1896 ToolkitTestApplication application;
1898 WebView view = WebView::New();
1899 DALI_TEST_CHECK( view );
1901 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1902 DALI_TEST_CHECK( settings != 0 )
1905 settings->AllowMixedContents( false );
1906 settings->EnableSpatialNavigation( false );
1907 settings->EnableWebSecurity( false );
1908 settings->EnableCacheBuilder( false );
1909 settings->EnableDoNotTrack( false );
1910 settings->UseScrollbarThumbFocusNotifications( false );
1911 settings->AllowFileAccessFromExternalUrl( false );
1912 settings->AllowScriptsOpenWindows( false );
1914 // Check default value is true or not
1915 bool value = settings->IsPrivateBrowsingEnabled();
1916 DALI_TEST_CHECK( value );
1918 // Check Set/GetProperty
1919 settings->EnablePrivateBrowsing( false );
1920 value = settings->IsPrivateBrowsingEnabled();
1921 DALI_TEST_CHECK( !value );
1926 int UtcDaliWebSettingsCheckEnableLinkMagnifier(void)
1928 ToolkitTestApplication application;
1930 WebView view = WebView::New();
1931 DALI_TEST_CHECK( view );
1933 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1934 DALI_TEST_CHECK( settings != 0 )
1937 settings->AllowMixedContents( false );
1938 settings->EnableSpatialNavigation( false );
1939 settings->EnableWebSecurity( false );
1940 settings->EnableCacheBuilder( false );
1941 settings->EnableDoNotTrack( false );
1942 settings->UseScrollbarThumbFocusNotifications( false );
1943 settings->AllowFileAccessFromExternalUrl( false );
1944 settings->AllowScriptsOpenWindows( false );
1946 // Check default value is true or not
1947 bool value = settings->IsLinkMagnifierEnabled();
1948 DALI_TEST_CHECK( value );
1950 // Check Set/GetProperty
1951 settings->EnableLinkMagnifier( false );
1952 value = settings->IsLinkMagnifierEnabled();
1953 DALI_TEST_CHECK( !value );
1958 int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void)
1960 ToolkitTestApplication application;
1962 WebView view = WebView::New();
1963 DALI_TEST_CHECK( view );
1965 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1966 DALI_TEST_CHECK( settings != 0 )
1969 settings->AllowMixedContents( false );
1970 settings->EnableSpatialNavigation( false );
1971 settings->EnableWebSecurity( false );
1972 settings->EnableCacheBuilder( false );
1973 settings->EnableDoNotTrack( false );
1974 settings->UseScrollbarThumbFocusNotifications( false );
1975 settings->AllowFileAccessFromExternalUrl( false );
1976 settings->AllowScriptsOpenWindows( false );
1978 // Check default value is true or not
1979 bool value = settings->IsKeypadWithoutUserActionUsed();
1980 DALI_TEST_CHECK( value );
1982 // Check Set/GetProperty
1983 settings->UseKeypadWithoutUserAction( false );
1984 value = settings->IsKeypadWithoutUserActionUsed();
1985 DALI_TEST_CHECK( !value );
1990 int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void)
1992 ToolkitTestApplication application;
1994 WebView view = WebView::New();
1995 DALI_TEST_CHECK( view );
1997 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1998 DALI_TEST_CHECK( settings != 0 )
2001 settings->AllowMixedContents( false );
2002 settings->EnableSpatialNavigation( false );
2003 settings->EnableWebSecurity( false );
2004 settings->EnableCacheBuilder( false );
2005 settings->EnableDoNotTrack( false );
2006 settings->UseScrollbarThumbFocusNotifications( false );
2007 settings->AllowFileAccessFromExternalUrl( false );
2008 settings->AllowScriptsOpenWindows( false );
2010 // Check default value is true or not
2011 bool value = settings->IsAutofillPasswordFormEnabled();
2012 DALI_TEST_CHECK( value );
2013 settings->EnableAutofillPasswordForm( false );
2014 value = settings->IsAutofillPasswordFormEnabled();
2015 DALI_TEST_CHECK( !value );
2019 int UtcDaliWebSettingsCheckEnableFormCandidateData(void)
2021 ToolkitTestApplication application;
2023 WebView view = WebView::New();
2024 DALI_TEST_CHECK( view );
2026 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2027 DALI_TEST_CHECK( settings != 0 );
2030 settings->AllowMixedContents( false );
2031 settings->EnableSpatialNavigation( false );
2032 settings->EnableWebSecurity( false );
2033 settings->EnableCacheBuilder( false );
2034 settings->EnableDoNotTrack( false );
2035 settings->UseScrollbarThumbFocusNotifications( false );
2036 settings->AllowFileAccessFromExternalUrl( false );
2037 settings->AllowScriptsOpenWindows( false );
2039 // Check default value is true or not
2040 bool value = settings->IsFormCandidateDataEnabled();
2041 DALI_TEST_CHECK( value );
2043 // Check Set/GetProperty
2044 settings->EnableFormCandidateData( false );
2045 value = settings->IsFormCandidateDataEnabled();
2046 DALI_TEST_CHECK( !value );
2051 int UtcDaliWebSettingsCheckEnableTextSelection(void)
2053 ToolkitTestApplication application;
2055 WebView view = WebView::New();
2056 DALI_TEST_CHECK( view );
2058 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2059 DALI_TEST_CHECK( settings != 0 );
2062 settings->AllowMixedContents( false );
2063 settings->EnableSpatialNavigation( false );
2064 settings->EnableWebSecurity( false );
2065 settings->EnableCacheBuilder( false );
2066 settings->EnableDoNotTrack( false );
2067 settings->UseScrollbarThumbFocusNotifications( false );
2068 settings->AllowFileAccessFromExternalUrl( false );
2069 settings->AllowScriptsOpenWindows( false );
2071 // Check default value is true or not
2072 bool value = settings->IsTextSelectionEnabled();
2073 DALI_TEST_CHECK( value );
2075 //Check Set/GetProperty
2076 settings->EnableTextSelection(false);
2077 value = settings->IsTextSelectionEnabled();
2078 DALI_TEST_CHECK( !value );
2083 int UtcDaliWebSettingsCheckEnableTextAutosizing(void)
2085 ToolkitTestApplication application;
2087 WebView view = WebView::New();
2088 DALI_TEST_CHECK( view );
2090 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2091 DALI_TEST_CHECK( settings != 0 );
2094 settings->AllowMixedContents( false );
2095 settings->EnableSpatialNavigation( false );
2096 settings->EnableWebSecurity( false );
2097 settings->EnableCacheBuilder( false );
2098 settings->EnableDoNotTrack( false );
2099 settings->UseScrollbarThumbFocusNotifications( false );
2100 settings->AllowFileAccessFromExternalUrl( false );
2101 settings->AllowScriptsOpenWindows( false );
2103 // Check default value is true or not
2104 bool value = settings->IsTextAutosizingEnabled();
2105 DALI_TEST_CHECK( value );
2107 // Check Set/GetProperty
2108 settings->EnableTextAutosizing(false);
2109 value = settings->IsTextAutosizingEnabled();
2110 DALI_TEST_CHECK( !value );
2115 int UtcDaliWebSettingsCheckEnableArrowScroll(void)
2117 ToolkitTestApplication application;
2119 WebView view = WebView::New();
2120 DALI_TEST_CHECK( view );
2122 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2123 DALI_TEST_CHECK( settings != 0 );
2126 settings->AllowMixedContents( false );
2127 settings->EnableSpatialNavigation( false );
2128 settings->EnableWebSecurity( false );
2129 settings->EnableCacheBuilder( false );
2130 settings->EnableDoNotTrack( false );
2131 settings->UseScrollbarThumbFocusNotifications( false );
2132 settings->AllowFileAccessFromExternalUrl( false );
2133 settings->AllowScriptsOpenWindows( false );
2135 // Check default value is true or not
2136 bool value = settings->IsArrowScrollEnabled();
2137 DALI_TEST_CHECK( value );
2139 // Check Set/GetProperty
2140 settings->EnableArrowScroll(false);
2141 value = settings->IsArrowScrollEnabled();
2142 DALI_TEST_CHECK( !value );
2147 int UtcDaliWebSettingsCheckEnableClipboard(void)
2149 ToolkitTestApplication application;
2151 WebView view = WebView::New();
2152 DALI_TEST_CHECK( view );
2154 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2155 DALI_TEST_CHECK( settings != 0 );
2158 settings->AllowMixedContents( false );
2159 settings->EnableSpatialNavigation( false );
2160 settings->EnableWebSecurity( false );
2161 settings->EnableCacheBuilder( false );
2162 settings->EnableDoNotTrack( false );
2163 settings->UseScrollbarThumbFocusNotifications( false );
2164 settings->AllowFileAccessFromExternalUrl( false );
2165 settings->AllowScriptsOpenWindows( false );
2167 // Check default value is true or not
2168 bool value = settings->IsClipboardEnabled();
2169 DALI_TEST_CHECK( value );
2170 settings->EnableClipboard(false);
2171 value = settings->IsClipboardEnabled();
2172 DALI_TEST_CHECK( !value );
2176 int UtcDaliWebSettingsCheckEnableImePanel(void)
2178 ToolkitTestApplication application;
2180 WebView view = WebView::New();
2181 DALI_TEST_CHECK( view );
2183 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2184 DALI_TEST_CHECK( settings != 0 );
2187 settings->AllowMixedContents( false );
2188 settings->EnableSpatialNavigation( false );
2189 settings->EnableWebSecurity( false );
2190 settings->EnableCacheBuilder( false );
2191 settings->EnableDoNotTrack( false );
2192 settings->UseScrollbarThumbFocusNotifications( false );
2193 settings->AllowFileAccessFromExternalUrl( false );
2194 settings->AllowScriptsOpenWindows( false );
2196 // Check default value is true or not
2197 bool value = settings->IsImePanelEnabled();
2198 DALI_TEST_CHECK( value );
2200 // Check Set/GetProperty
2201 settings->EnableImePanel(false);
2202 value = settings->IsImePanelEnabled();
2203 DALI_TEST_CHECK( !value );
2208 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
2210 ToolkitTestApplication application;
2212 WebView view = WebView::New();
2213 DALI_TEST_CHECK( view );
2215 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2216 DALI_TEST_CHECK( settings != 0 )
2219 settings->AllowMixedContents( false );
2220 settings->EnableSpatialNavigation( false );
2221 settings->EnableWebSecurity( false );
2222 settings->EnableCacheBuilder( false );
2223 settings->EnableDoNotTrack( false );
2224 settings->UseScrollbarThumbFocusNotifications( false );
2225 settings->AllowFileAccessFromExternalUrl( false );
2226 settings->AllowScriptsOpenWindows( false );
2228 // Check default value is true or not
2229 bool value = settings->AreImagesLoadedAutomatically();
2230 DALI_TEST_CHECK( value );
2232 // Check Set/GetProperty
2233 settings->AllowImagesLoadAutomatically( false );
2234 value = settings->AreImagesLoadedAutomatically();
2235 DALI_TEST_CHECK( !value );
2240 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
2242 ToolkitTestApplication application;
2244 WebView view = WebView::New();
2245 DALI_TEST_CHECK( view );
2247 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2248 DALI_TEST_CHECK( settings != 0 )
2250 const std::string kDefaultValue;
2251 const std::string kTestValue = "UTF-8";
2254 settings->AllowMixedContents( false );
2255 settings->EnableSpatialNavigation( false );
2256 settings->EnableWebSecurity( false );
2257 settings->EnableCacheBuilder( false );
2258 settings->EnableDoNotTrack( false );
2259 settings->UseScrollbarThumbFocusNotifications( false );
2260 settings->AllowFileAccessFromExternalUrl( false );
2261 settings->AllowScriptsOpenWindows( false );
2263 // Check default value
2264 std::string value = settings->GetDefaultTextEncodingName();
2265 DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
2267 // Check Set/GetProperty
2268 settings->SetDefaultTextEncodingName( kTestValue );
2269 value = settings->GetDefaultTextEncodingName();
2270 DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );
2275 int UtcDaliWebSettingsSetViewportMetaTag(void)
2277 ToolkitTestApplication application;
2279 WebView view = WebView::New();
2280 DALI_TEST_CHECK( view );
2282 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2283 DALI_TEST_CHECK( settings != 0 )
2285 // Check the value is true or not
2286 bool value = settings->SetViewportMetaTag(true);
2287 DALI_TEST_CHECK( value );
2292 int UtcDaliWebSettingsSetForceZoom(void)
2294 ToolkitTestApplication application;
2296 WebView view = WebView::New();
2297 DALI_TEST_CHECK( view );
2299 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2300 DALI_TEST_CHECK( settings != 0 )
2302 // Check the value is true or not
2303 bool value = settings->SetForceZoom(true);
2304 DALI_TEST_CHECK( value );
2306 value = settings->IsZoomForced();
2307 DALI_TEST_CHECK( value );
2312 int UtcDaliWebSettingsSetTextZoomEnabled(void)
2314 ToolkitTestApplication application;
2316 WebView view = WebView::New();
2317 DALI_TEST_CHECK( view );
2319 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2320 DALI_TEST_CHECK( settings != 0 )
2322 // Check the value is true or not
2323 bool value = settings->SetTextZoomEnabled(true);
2324 DALI_TEST_CHECK( value );
2326 value = settings->IsTextZoomEnabled();
2327 DALI_TEST_CHECK( value );
2332 int UtcDaliWebSettingsSetExtraFeature(void)
2334 ToolkitTestApplication application;
2336 WebView view = WebView::New();
2337 DALI_TEST_CHECK( view );
2339 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2340 DALI_TEST_CHECK( settings != 0 )
2342 // Check the value is true or not
2343 settings->SetExtraFeature("test", true);
2344 bool value = settings->IsExtraFeatureEnabled("test");
2345 DALI_TEST_CHECK( value );