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 gPolicyDecisionCallbackCalled = 0;
85 static std::shared_ptr<Dali::WebEnginePolicyDecision> gPolicyDecisionInstance = 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 OnPolicyDecisionRequest(WebView view, std::shared_ptr<Dali::WebEnginePolicyDecision> decision)
142 gPolicyDecisionCallbackCalled++;
143 gPolicyDecisionInstance = 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 default value of favicon
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 );
1071 int UtcDaliWebViewContextMenuCustomizedAndItemSelected(void)
1073 ToolkitTestApplication application;
1075 WebView view = WebView::New();
1076 DALI_TEST_CHECK( view );
1079 ConnectionTracker* testTracker = new ConnectionTracker();
1080 view.ContextMenuCustomizedSignal().Connect( &OnContextMenuCustomized );
1081 view.ContextMenuItemSelectedSignal().Connect( &OnContextMenuItemSelected );
1082 bool signal1 = false;
1083 bool signal2 = false;
1084 view.ConnectSignal( testTracker, "contextMenuCustomized", CallbackFunctor(&signal1) );
1085 view.ConnectSignal( testTracker, "contextMenuItemSelected", CallbackFunctor(&signal2) );
1086 DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 0, TEST_LOCATION );
1087 DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 0, TEST_LOCATION );
1088 DALI_TEST_CHECK(gContextMenuInstance == 0);
1089 DALI_TEST_CHECK(gContextMenuItemInstance == 0);
1091 view.LoadUrl( TEST_URL1 );
1092 Test::EmitGlobalTimerSignal();
1093 DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 1, TEST_LOCATION );
1094 DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 1, TEST_LOCATION );
1095 DALI_TEST_CHECK( signal1 );
1096 DALI_TEST_CHECK( signal2 );
1098 // check context meun & its items.
1099 DALI_TEST_CHECK(gContextMenuInstance != 0);
1100 std::unique_ptr<Dali::WebEngineContextMenuItem> item = gContextMenuInstance->GetItemAt(0);
1101 DALI_TEST_CHECK(item.get() != 0);
1102 std::vector<std::unique_ptr<Dali::WebEngineContextMenuItem>> itemList = gContextMenuInstance->GetItemList();
1103 DALI_TEST_CHECK(itemList.size() == 1);
1104 Dali::Vector2 testPosition = Dali::Vector2(100, 100);
1105 DALI_TEST_EQUALS(gContextMenuInstance->GetPosition(), testPosition, TEST_LOCATION);
1106 DALI_TEST_CHECK(gContextMenuInstance->RemoveItem(*(item.get())));
1107 DALI_TEST_CHECK(gContextMenuInstance->AppendItemAsAction(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", false));
1108 DALI_TEST_CHECK(gContextMenuInstance->AppendItem(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", "", false));
1109 DALI_TEST_CHECK(gContextMenuInstance->SelectItem(*(item.get())));
1110 DALI_TEST_CHECK(gContextMenuInstance->Hide());
1112 DALI_TEST_CHECK(gContextMenuItemInstance != 0);
1113 Dali::WebEngineContextMenuItem::ItemTag testItemTag = Dali::WebEngineContextMenuItem::ItemTag::NO_ACTION;
1114 DALI_TEST_EQUALS(gContextMenuItemInstance->GetTag(), testItemTag, TEST_LOCATION);
1115 Dali::WebEngineContextMenuItem::ItemType testItemType = Dali::WebEngineContextMenuItem::ItemType::ACTION;
1116 DALI_TEST_EQUALS(gContextMenuItemInstance->GetType(), testItemType, TEST_LOCATION);
1117 DALI_TEST_CHECK(gContextMenuItemInstance->IsEnabled());
1118 std::string testLinkUrl("http://test.html");
1119 DALI_TEST_EQUALS(gContextMenuItemInstance->GetLinkUrl(), testLinkUrl, TEST_LOCATION);
1120 std::string testImageUrl("http://test.jpg");
1121 DALI_TEST_EQUALS(gContextMenuItemInstance->GetImageUrl(), testImageUrl, TEST_LOCATION);
1122 std::string testTitle("title");
1123 DALI_TEST_EQUALS(gContextMenuItemInstance->GetTitle(), testTitle, TEST_LOCATION);
1124 DALI_TEST_CHECK(gContextMenuItemInstance->GetParentMenu().get() == 0);
1126 gContextMenuInstance = nullptr;
1127 gContextMenuItemInstance = nullptr;
1132 int UtcDaliWebViewScrollBy(void)
1134 ToolkitTestApplication application;
1136 WebView view = WebView::New();
1137 DALI_TEST_CHECK( view );
1140 ConnectionTracker* testTracker = new ConnectionTracker();
1141 view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
1142 bool signal1 = false;
1143 view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
1144 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
1146 view.LoadUrl( TEST_URL1 );
1147 Test::EmitGlobalTimerSignal();
1149 // set scroll position.
1150 Dali::Vector2 output = Dali::Vector2::ONE;
1151 Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
1152 view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
1153 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1154 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
1156 // scroll by and trigger scrollEdgeReached event.
1157 view.ScrollBy( 50, 50 );
1158 Test::EmitGlobalTimerSignal();
1160 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1161 DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
1162 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
1163 DALI_TEST_CHECK( signal1 );
1165 // scroll by and trigger scrollEdgeReached event.
1166 bool result = view.ScrollEdgeBy( 50, 50 );
1167 DALI_TEST_CHECK( result );
1168 Test::EmitGlobalTimerSignal();
1170 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1171 DALI_TEST_CHECK( output.x == 200 && output.y == 200 );
1172 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 2, TEST_LOCATION );
1173 DALI_TEST_CHECK( signal1 );
1178 int UtcDaliWebViewSetGetScaleFactorActivateAccessibility(void)
1180 ToolkitTestApplication application;
1182 WebView view = WebView::New();
1183 DALI_TEST_CHECK( view );
1185 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1186 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1187 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1188 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1190 application.GetScene().Add( view );
1191 application.SendNotification();
1192 application.Render();
1194 view.ActivateAccessibility(true);
1195 view.AddDynamicCertificatePath("host", "test/to/path");
1196 bool found = view.HighlightText("test", Dali::WebEnginePlugin::FindOption::CASE_INSENSITIVE, 2);
1197 DALI_TEST_CHECK( found );
1199 view.SetScaleFactor(1.5f, Dali::Vector2(0.0f, 0.0f));
1200 float result = view.GetScaleFactor();
1201 DALI_TEST_EQUALS( result, 1.5f, TEST_LOCATION );
1203 view.SetScaleFactor(1.0f, Dali::Vector2(0.0f, 0.0f));
1204 result = view.GetScaleFactor();
1205 DALI_TEST_EQUALS( result, 1.0f, TEST_LOCATION );
1210 int UtcDaliWebViewGetScreenshotSyncAndAsync(void)
1213 ToolkitTestApplication application;
1215 char argv[] = "--test";
1216 WebView view = WebView::New( 1, (char**)&argv );
1217 DALI_TEST_CHECK( view );
1219 // Check GetScreenshot
1220 Dali::Rect<int> viewArea;
1223 viewArea.width = 10;
1224 viewArea.height = 10;
1225 Dali::Toolkit::ImageView screenshot = view.GetScreenshot(viewArea, 1.0f);
1226 DALI_TEST_CHECK( screenshot );
1227 Dali::Vector3 shotsize = screenshot.GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
1228 DALI_TEST_CHECK( ( int )shotsize.width == viewArea.width && ( int )shotsize.height == viewArea.height );
1230 // Check GetScreenshotAsynchronously
1233 viewArea.width = 100;
1234 viewArea.height = 100;
1235 bool result = view.GetScreenshotAsynchronously(viewArea, 1.0f, &OnScreenshotCaptured);
1236 DALI_TEST_CHECK( result );
1238 Test::EmitGlobalTimerSignal();
1240 Test::EmitGlobalTimerSignal();
1241 DALI_TEST_EQUALS( gScreenshotCapturedCallbackCalled, 1, TEST_LOCATION );
1246 int UtcDaliWebViewVideoPlayingGeolocationPermission(void)
1249 ToolkitTestApplication application;
1251 char argv[] = "--test";
1252 WebView view = WebView::New( 1, (char**)&argv );
1253 DALI_TEST_CHECK( view );
1255 // Check CheckVideoPlayingAsynchronously
1256 bool result = view.CheckVideoPlayingAsynchronously(&OnVideoPlaying);
1257 DALI_TEST_CHECK( result );
1258 Test::EmitGlobalTimerSignal();
1259 DALI_TEST_EQUALS( gVideoPlayingCallbackCalled, 1, TEST_LOCATION );
1261 // Check RegisterGeolocationPermissionCallback
1262 view.RegisterGeolocationPermissionCallback(&OnGeolocationPermission);
1263 Test::EmitGlobalTimerSignal();
1264 DALI_TEST_EQUALS( gGeolocationPermissionCallbackCalled, 1, TEST_LOCATION );
1269 int UtcDaliWebViewHttpRequestInterceptor(void)
1271 ToolkitTestApplication application;
1273 WebView view = WebView::New();
1274 DALI_TEST_CHECK( view );
1277 ConnectionTracker* testTracker = new ConnectionTracker();
1278 view.RequestInterceptorSignal().Connect( &OnRequestInterceptor );
1279 bool signal1 = false;
1280 view.ConnectSignal( testTracker, "requestInterceptor", CallbackFunctor(&signal1) );
1281 DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 0, TEST_LOCATION );
1282 DALI_TEST_CHECK(gRequestInterceptorInstance == 0);
1284 view.LoadUrl( TEST_URL1 );
1285 Test::EmitGlobalTimerSignal();
1286 DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 1, TEST_LOCATION );
1287 DALI_TEST_CHECK( signal1 );
1289 // check request interceptor.
1290 DALI_TEST_CHECK(gRequestInterceptorInstance != 0);
1291 DALI_TEST_CHECK(gRequestInterceptorInstance->Ignore());
1292 DALI_TEST_CHECK(gRequestInterceptorInstance->SetResponseStatus(400, "error"));
1293 DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseHeader("key", "value"));
1294 DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseBody("test", 4));
1295 std::string testUrl("http://test.html");
1296 DALI_TEST_EQUALS(gRequestInterceptorInstance->GetUrl(), testUrl, TEST_LOCATION);
1298 gRequestInterceptorInstance = nullptr;
1303 int UtcDaliWebViewPolicyDecisionRequest(void)
1305 ToolkitTestApplication application;
1307 WebView view = WebView::New();
1308 DALI_TEST_CHECK( view );
1311 ConnectionTracker* testTracker = new ConnectionTracker();
1312 view.PolicyDecisionSignal().Connect( &OnPolicyDecisionRequest );
1313 bool signal1 = false;
1314 view.ConnectSignal( testTracker, "policyDecision", CallbackFunctor(&signal1) );
1315 DALI_TEST_EQUALS( gPolicyDecisionCallbackCalled, 0, TEST_LOCATION );
1316 DALI_TEST_CHECK(gPolicyDecisionInstance == 0);
1318 view.LoadUrl( TEST_URL1 );
1319 Test::EmitGlobalTimerSignal();
1320 DALI_TEST_EQUALS( gPolicyDecisionCallbackCalled, 1, TEST_LOCATION );
1321 DALI_TEST_CHECK( signal1 );
1323 // check policy decision & its frame.
1324 DALI_TEST_CHECK(gPolicyDecisionInstance != 0);
1325 std::string testUrl("http://test.html");
1326 DALI_TEST_EQUALS(gPolicyDecisionInstance->GetUrl(), testUrl, TEST_LOCATION);
1327 std::string testCookie("test:abc");
1328 DALI_TEST_EQUALS(gPolicyDecisionInstance->GetCookie(), testCookie, TEST_LOCATION);
1329 Dali::WebEnginePolicyDecision::DecisionType testDecisionType = Dali::WebEnginePolicyDecision::DecisionType::USE;
1330 DALI_TEST_EQUALS(gPolicyDecisionInstance->GetDecisionType(), testDecisionType, TEST_LOCATION);
1331 std::string testResponseMime("txt/xml");
1332 DALI_TEST_EQUALS(gPolicyDecisionInstance->GetResponseMime(), testResponseMime, TEST_LOCATION);
1333 int32_t ResponseStatusCode = 500;
1334 DALI_TEST_EQUALS(gPolicyDecisionInstance->GetResponseStatusCode(), ResponseStatusCode, TEST_LOCATION);
1335 Dali::WebEnginePolicyDecision::NavigationType testNavigationType = Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
1336 DALI_TEST_EQUALS(gPolicyDecisionInstance->GetNavigationType(), testNavigationType, TEST_LOCATION);
1337 std::string testScheme("test");
1338 DALI_TEST_EQUALS(gPolicyDecisionInstance->GetScheme(), testScheme, TEST_LOCATION);
1339 DALI_TEST_CHECK(gPolicyDecisionInstance->Use());
1340 DALI_TEST_CHECK(gPolicyDecisionInstance->Ignore());
1341 DALI_TEST_CHECK(gPolicyDecisionInstance->Suspend());
1343 Dali::WebEngineFrame* webFrame = &(gPolicyDecisionInstance->GetFrame());
1344 DALI_TEST_CHECK(webFrame);
1345 DALI_TEST_CHECK(webFrame->IsMainFrame());
1347 gPolicyDecisionInstance = nullptr;
1352 int UtcDaliWebViewHitTest(void)
1354 ToolkitTestApplication application;
1356 WebView view = WebView::New();
1357 DALI_TEST_CHECK( view );
1360 view.LoadUrl( TEST_URL1 );
1363 std::unique_ptr<Dali::WebEngineHitTest> hitTest = view.CreateHitTest(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT);
1364 DALI_TEST_CHECK(hitTest != 0);
1365 DALI_TEST_EQUALS(hitTest->GetResultContext(), Dali::WebEngineHitTest::ResultContext::DOCUMENT, TEST_LOCATION);
1366 std::string testLinkUri("http://test.html");
1367 DALI_TEST_EQUALS(hitTest->GetLinkUri(), testLinkUri, TEST_LOCATION);
1368 std::string testLinkTitle("test");
1369 DALI_TEST_EQUALS(hitTest->GetLinkTitle(), testLinkTitle, TEST_LOCATION);
1370 std::string testLinkLabel("label");
1371 DALI_TEST_EQUALS(hitTest->GetLinkLabel(), testLinkLabel, TEST_LOCATION);
1372 std::string testImageUri("http://test.jpg");
1373 DALI_TEST_EQUALS(hitTest->GetImageUri(), testImageUri, TEST_LOCATION);
1374 std::string testMediaUri("http://test.mp4");
1375 DALI_TEST_EQUALS(hitTest->GetMediaUri(), testMediaUri, TEST_LOCATION);
1376 std::string testTagName("img");
1377 DALI_TEST_EQUALS(hitTest->GetTagName(), testTagName, TEST_LOCATION);
1378 std::string testNodeValue("test");
1379 DALI_TEST_EQUALS(hitTest->GetNodeValue(), testNodeValue, TEST_LOCATION);
1380 Dali::Property::Map* testMap = &hitTest->GetAttributes();
1381 DALI_TEST_CHECK(testMap);
1382 std::string testImageFileNameExtension("jpg");
1383 DALI_TEST_EQUALS(hitTest->GetImageFileNameExtension(), testImageFileNameExtension, TEST_LOCATION);
1384 Dali::PixelData testImageBuffer = hitTest->GetImageBuffer();
1385 DALI_TEST_CHECK((int)testImageBuffer.GetWidth() == 2 && (int)testImageBuffer.GetHeight() == 2);
1388 bool result = view.CreateHitTestAsynchronously(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT, &OnHitTestCreated);
1389 DALI_TEST_CHECK(result);
1390 Test::EmitGlobalTimerSignal();
1391 DALI_TEST_EQUALS( gHitTestCreatedCallbackCalled, 1, TEST_LOCATION );
1396 int UtcDaliWebViewEvaluteJavaScript(void)
1398 ToolkitTestApplication application;
1400 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1402 view.LoadHtmlString( "<body>Hello World!</body>" );
1403 view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
1404 view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript );
1405 Test::EmitGlobalTimerSignal();
1407 DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION );
1412 int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void)
1414 ToolkitTestApplication application;
1416 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1418 view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert );
1419 view.LoadHtmlString( "<head><script type='text/javascript'>alert('this is an alert popup.');</script></head><body>Hello World!</body>" );
1420 view.JavaScriptAlertReply();
1421 Test::EmitGlobalTimerSignal();
1422 DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION );
1424 view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm );
1425 view.LoadHtmlString( "<head><script type='text/javascript'>confirm('this is a confirm popup.');</script></head><body>Hello World!</body>" );
1426 view.JavaScriptConfirmReply( true );
1427 Test::EmitGlobalTimerSignal();
1428 DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION );
1430 view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt );
1431 view.LoadHtmlString( "<head><script type='text/javascript'>prompt('this is a prompt popup.');</script></head><body>Hello World!</body>" );
1432 view.JavaScriptPromptReply( "it is a prompt." );
1433 Test::EmitGlobalTimerSignal();
1434 DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION );
1439 int UtcDaliWebViewLoadHtmlStringOverrideCurrentEntryAndContents(void)
1441 ToolkitTestApplication application;
1443 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1444 DALI_TEST_CHECK( view );
1446 std::string html("<body>Hello World!</body>");
1447 std::string basicUri("http://basicurl");
1448 std::string unreachableUrl("http://unreachableurl");
1449 bool result = view.LoadHtmlStringOverrideCurrentEntry( html, basicUri, unreachableUrl );
1450 DALI_TEST_CHECK( result );
1452 application.SendNotification();
1453 application.Render();
1454 Test::EmitGlobalTimerSignal();
1456 result = view.LoadContents( html, html.length(), "html/text", "utf-8", basicUri );
1457 DALI_TEST_CHECK( result );
1462 int UtcDaliWebViewReloadSuspendResumeNetworkLoadingCustomHeader(void)
1464 ToolkitTestApplication application;
1466 WebView view = WebView::New();
1467 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1468 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1469 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1470 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1472 application.GetScene().Add( view );
1473 application.SendNotification();
1474 application.Render();
1475 DALI_TEST_CHECK( view );
1477 view.LoadUrl( "http://test.html" );
1478 bool result = view.AddCustomHeader("key", "value");
1479 DALI_TEST_CHECK( result );
1481 result = view.ReloadWithoutCache();
1482 DALI_TEST_CHECK( result );
1484 uint32_t portNumber = view.StartInspectorServer(5000);
1485 DALI_TEST_EQUALS( portNumber, 5000, TEST_LOCATION );
1487 application.SendNotification();
1488 application.Render();
1489 Test::EmitGlobalTimerSignal();
1491 result = view.StopInspectorServer();
1492 DALI_TEST_CHECK( result );
1494 view.SuspendNetworkLoading();
1496 result = view.RemoveCustomHeader("key");
1497 DALI_TEST_CHECK( result );
1499 view.ResumeNetworkLoading();
1504 int UtcDaliWebViewMethodsForCoverage(void)
1506 ToolkitTestApplication application;
1508 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1510 view.LoadHtmlString( "<body>Hello World!</body>" );
1511 view.AddJavaScriptMessageHandler( "jsObject",
1512 []( const std::string& arg ) {
1516 DALI_TEST_CHECK( view );
1521 // test cases for web backforward list.
1523 int UtcDaliWebBackForwardListCheckItem(void)
1525 ToolkitTestApplication application;
1527 WebView view = WebView::New();
1528 DALI_TEST_CHECK( view );
1530 Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
1531 DALI_TEST_CHECK( bfList != 0 )
1533 unsigned int itemCount = bfList->GetItemCount();
1534 DALI_TEST_CHECK( itemCount == 1 )
1536 std::unique_ptr<Dali::WebEngineBackForwardListItem> citem = bfList->GetCurrentItem();
1537 DALI_TEST_CHECK( citem != 0 );
1539 std::unique_ptr<Dali::WebEngineBackForwardListItem> citemP = bfList->GetPreviousItem();
1540 DALI_TEST_CHECK( citemP != 0 );
1542 std::unique_ptr<Dali::WebEngineBackForwardListItem> citemN = bfList->GetNextItem();
1543 DALI_TEST_CHECK( citemN != 0 );
1545 const std::string kDefaultUrl( "http://url" );
1546 std::string testValue = citem->GetUrl();
1547 DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION );
1549 const std::string kDefaultTitle( "title" );
1550 testValue = citem->GetTitle();
1551 DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION );
1553 const std::string kDefaultOriginalUrl( "http://originalurl" );
1554 testValue = citem->GetOriginalUrl();
1555 DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION );
1557 std::unique_ptr<Dali::WebEngineBackForwardListItem> item = bfList->GetItemAtIndex( 0 );
1558 DALI_TEST_CHECK( item != 0 );
1560 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vecBack = bfList->GetBackwardItems(-1);
1561 DALI_TEST_CHECK( vecBack.size() == 1 );
1563 std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vecForward = bfList->GetForwardItems(-1);
1564 DALI_TEST_CHECK( vecForward.size() == 1 );
1569 // test cases for web context.
1571 int UtcDaliWebContextGetSetCacheModel(void)
1573 ToolkitTestApplication application;
1575 WebView view = WebView::New();
1576 DALI_TEST_CHECK( view );
1578 Dali::Toolkit::WebContext* context = view.GetContext();
1579 DALI_TEST_CHECK( context != 0 )
1581 std::string kDefaultValue;
1584 context->SetProxyUri( kDefaultValue );
1585 context->SetCertificateFilePath( kDefaultValue );
1586 context->DisableCache( false );
1587 context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
1588 context->DeleteAllWebDatabase();
1589 context->DeleteAllWebStorage();
1590 context->DeleteLocalFileSystem();
1591 context->ClearCache();
1593 // Check default value
1594 Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
1595 DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
1597 // Check Set/GetProperty
1598 context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1599 value = context->GetCacheModel();
1600 DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1605 int UtcDaliWebContextGetWebDatabaseStorageOrigins(void)
1607 ToolkitTestApplication application;
1609 WebView view = WebView::New();
1610 DALI_TEST_CHECK( view );
1612 Dali::Toolkit::WebContext* context = view.GetContext();
1613 DALI_TEST_CHECK( context != 0 )
1615 std::string kDefaultValue;
1617 // get origins of web database
1618 bool result = context->GetWebDatabaseOrigins(&OnSecurityOriginsAcquired);
1619 DALI_TEST_CHECK( result );
1621 Test::EmitGlobalTimerSignal();
1622 DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 1, TEST_LOCATION );
1623 DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1625 Dali::WebEngineSecurityOrigin* origin = gSecurityOriginList[0].get();
1626 DALI_TEST_CHECK( origin );
1628 result = context->DeleteWebDatabase(*origin);
1629 DALI_TEST_CHECK( result );
1631 // get origins of web storage
1632 result = context->GetWebStorageOrigins(&OnSecurityOriginsAcquired);
1633 DALI_TEST_CHECK( result );
1635 Test::EmitGlobalTimerSignal();
1636 DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 2, TEST_LOCATION );
1637 DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1639 origin = gSecurityOriginList[0].get();
1640 DALI_TEST_CHECK( origin );
1642 result = context->GetWebStorageUsageForOrigin(*origin, &OnStorageUsageAcquired);
1643 DALI_TEST_CHECK( result );
1644 Test::EmitGlobalTimerSignal();
1645 DALI_TEST_EQUALS( gStorageUsageAcquiredCallbackCalled, 1, TEST_LOCATION );
1647 result = context->DeleteWebStorageOrigin(*origin);
1648 DALI_TEST_CHECK( result );
1650 result = context->DeleteApplicationCache(*origin);
1651 DALI_TEST_CHECK( result );
1653 // form passwords, download state, mime type.
1654 context->GetFormPasswordList(&OnFormPasswordsAcquired);
1655 Test::EmitGlobalTimerSignal();
1656 DALI_TEST_EQUALS(gFormPasswordsAcquiredCallbackCalled, 1, TEST_LOCATION);
1657 DALI_TEST_CHECK(gPasswordDataList.size() == 1);
1658 DALI_TEST_EQUALS(gPasswordDataList[0]->url, "http://test.html", TEST_LOCATION);
1659 DALI_TEST_CHECK(gPasswordDataList[0]->useFingerprint == false);
1661 context->RegisterDownloadStartedCallback(&OnDownloadStarted);
1662 Test::EmitGlobalTimerSignal();
1663 DALI_TEST_EQUALS(gDownloadStartedCallbackCalled, 1, TEST_LOCATION);
1665 context->RegisterMimeOverriddenCallback(&OnMimeOverridden);
1666 Test::EmitGlobalTimerSignal();
1667 DALI_TEST_EQUALS(gMimeOverriddenCallbackCalled, 1, TEST_LOCATION);
1669 gSecurityOriginList.clear();
1670 gPasswordDataList.clear();
1675 // test cases for web cookie manager.
1677 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
1679 ToolkitTestApplication application;
1681 WebView view = WebView::New();
1682 DALI_TEST_CHECK( view );
1684 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1685 DALI_TEST_CHECK( cookieManager != 0 )
1687 const std::string kDefaultValue;
1690 cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
1691 cookieManager->ClearCookies();
1693 // Check default value
1694 Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
1695 DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
1697 // Check Set/GetProperty
1698 cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1699 value = cookieManager->GetCookieAcceptPolicy();
1700 DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1705 int UtcDaliWebCookieManagerChangesWatch(void)
1707 ToolkitTestApplication application;
1709 WebView view = WebView::New();
1710 DALI_TEST_CHECK( view );
1712 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1713 DALI_TEST_CHECK( cookieManager != 0 )
1715 cookieManager->ChangesWatch(&OnChangesWatch);
1716 Test::EmitGlobalTimerSignal();
1717 DALI_TEST_EQUALS( gCookieManagerChangsWatchCallbackCalled, 1, TEST_LOCATION );
1722 // test cases for web settings.
1724 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
1726 ToolkitTestApplication application;
1728 WebView view = WebView::New();
1729 DALI_TEST_CHECK( view );
1731 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1732 DALI_TEST_CHECK( settings != 0 )
1735 settings->AllowMixedContents( false );
1736 settings->EnableSpatialNavigation( false );
1737 settings->EnableWebSecurity( false );
1738 settings->EnableCacheBuilder( false );
1739 settings->EnableDoNotTrack( false );
1740 settings->UseScrollbarThumbFocusNotifications( false );
1741 settings->AllowFileAccessFromExternalUrl( false );
1742 settings->AllowScriptsOpenWindows( false );
1744 // Check default value
1745 int value = settings->GetDefaultFontSize();
1746 DALI_TEST_CHECK( value == 16 );
1748 // Check Set/GetProperty
1749 settings->SetDefaultFontSize( 20 );
1750 value = settings->GetDefaultFontSize();
1751 DALI_TEST_CHECK( value == 20 );
1756 int UtcDaliWebSettingsCheckEnableJavaScript(void)
1758 ToolkitTestApplication application;
1760 WebView view = WebView::New();
1761 DALI_TEST_CHECK( view );
1763 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1764 DALI_TEST_CHECK( settings != 0 )
1767 settings->AllowMixedContents( false );
1768 settings->EnableSpatialNavigation( false );
1769 settings->EnableWebSecurity( false );
1770 settings->EnableCacheBuilder( false );
1771 settings->EnableDoNotTrack( false );
1772 settings->UseScrollbarThumbFocusNotifications( false );
1773 settings->AllowFileAccessFromExternalUrl( false );
1774 settings->AllowScriptsOpenWindows( false );
1776 // Check default value is true or not
1777 bool value = settings->IsJavaScriptEnabled();
1778 DALI_TEST_CHECK( value );
1780 // Check Set/GetProperty
1781 settings->EnableJavaScript( false );
1782 value = settings->IsJavaScriptEnabled();
1783 DALI_TEST_CHECK( !value );
1788 int UtcDaliWebSettingsCheckEnableAutoFitting(void)
1790 ToolkitTestApplication application;
1792 WebView view = WebView::New();
1793 DALI_TEST_CHECK( view );
1795 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1796 DALI_TEST_CHECK( settings != 0 )
1799 settings->AllowMixedContents( false );
1800 settings->EnableSpatialNavigation( false );
1801 settings->EnableWebSecurity( false );
1802 settings->EnableCacheBuilder( false );
1803 settings->EnableDoNotTrack( false );
1804 settings->UseScrollbarThumbFocusNotifications( false );
1805 settings->AllowFileAccessFromExternalUrl( false );
1806 settings->AllowScriptsOpenWindows( false );
1808 // Check default value is true or not
1809 bool value = settings->IsAutoFittingEnabled();
1810 DALI_TEST_CHECK( value );
1812 // Check Set/GetProperty
1813 settings->EnableAutoFitting( false );
1814 value = settings->IsAutoFittingEnabled();
1815 DALI_TEST_CHECK( !value );
1820 int UtcDaliWebSettingsCheckEnablePlugins(void)
1822 ToolkitTestApplication application;
1824 WebView view = WebView::New();
1825 DALI_TEST_CHECK( view );
1827 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1828 DALI_TEST_CHECK( settings != 0 )
1831 settings->AllowMixedContents( false );
1832 settings->EnableSpatialNavigation( false );
1833 settings->EnableWebSecurity( false );
1834 settings->EnableCacheBuilder( false );
1835 settings->EnableDoNotTrack( false );
1836 settings->UseScrollbarThumbFocusNotifications( false );
1837 settings->AllowFileAccessFromExternalUrl( false );
1838 settings->AllowScriptsOpenWindows( false );
1840 // Check default value is true or not
1841 bool value = settings->ArePluginsEnabled();
1842 DALI_TEST_CHECK( value );
1844 // Check Set/GetProperty
1845 settings->EnablePlugins( false );
1846 value = settings->ArePluginsEnabled();
1847 DALI_TEST_CHECK( !value );
1852 int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void)
1854 ToolkitTestApplication application;
1856 WebView view = WebView::New();
1857 DALI_TEST_CHECK( view );
1859 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1860 DALI_TEST_CHECK( settings != 0 )
1863 settings->AllowMixedContents( false );
1864 settings->EnableSpatialNavigation( false );
1865 settings->EnableWebSecurity( false );
1866 settings->EnableCacheBuilder( false );
1867 settings->EnableDoNotTrack( false );
1868 settings->UseScrollbarThumbFocusNotifications( false );
1869 settings->AllowFileAccessFromExternalUrl( false );
1870 settings->AllowScriptsOpenWindows( false );
1872 // Check default value is true or not
1873 bool value = settings->IsPrivateBrowsingEnabled();
1874 DALI_TEST_CHECK( value );
1876 // Check Set/GetProperty
1877 settings->EnablePrivateBrowsing( false );
1878 value = settings->IsPrivateBrowsingEnabled();
1879 DALI_TEST_CHECK( !value );
1884 int UtcDaliWebSettingsCheckEnableLinkMagnifier(void)
1886 ToolkitTestApplication application;
1888 WebView view = WebView::New();
1889 DALI_TEST_CHECK( view );
1891 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1892 DALI_TEST_CHECK( settings != 0 )
1895 settings->AllowMixedContents( false );
1896 settings->EnableSpatialNavigation( false );
1897 settings->EnableWebSecurity( false );
1898 settings->EnableCacheBuilder( false );
1899 settings->EnableDoNotTrack( false );
1900 settings->UseScrollbarThumbFocusNotifications( false );
1901 settings->AllowFileAccessFromExternalUrl( false );
1902 settings->AllowScriptsOpenWindows( false );
1904 // Check default value is true or not
1905 bool value = settings->IsLinkMagnifierEnabled();
1906 DALI_TEST_CHECK( value );
1908 // Check Set/GetProperty
1909 settings->EnableLinkMagnifier( false );
1910 value = settings->IsLinkMagnifierEnabled();
1911 DALI_TEST_CHECK( !value );
1916 int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void)
1918 ToolkitTestApplication application;
1920 WebView view = WebView::New();
1921 DALI_TEST_CHECK( view );
1923 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1924 DALI_TEST_CHECK( settings != 0 )
1927 settings->AllowMixedContents( false );
1928 settings->EnableSpatialNavigation( false );
1929 settings->EnableWebSecurity( false );
1930 settings->EnableCacheBuilder( false );
1931 settings->EnableDoNotTrack( false );
1932 settings->UseScrollbarThumbFocusNotifications( false );
1933 settings->AllowFileAccessFromExternalUrl( false );
1934 settings->AllowScriptsOpenWindows( false );
1936 // Check default value is true or not
1937 bool value = settings->IsKeypadWithoutUserActionUsed();
1938 DALI_TEST_CHECK( value );
1940 // Check Set/GetProperty
1941 settings->UseKeypadWithoutUserAction( false );
1942 value = settings->IsKeypadWithoutUserActionUsed();
1943 DALI_TEST_CHECK( !value );
1948 int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void)
1950 ToolkitTestApplication application;
1952 WebView view = WebView::New();
1953 DALI_TEST_CHECK( view );
1955 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1956 DALI_TEST_CHECK( settings != 0 )
1959 settings->AllowMixedContents( false );
1960 settings->EnableSpatialNavigation( false );
1961 settings->EnableWebSecurity( false );
1962 settings->EnableCacheBuilder( false );
1963 settings->EnableDoNotTrack( false );
1964 settings->UseScrollbarThumbFocusNotifications( false );
1965 settings->AllowFileAccessFromExternalUrl( false );
1966 settings->AllowScriptsOpenWindows( false );
1968 // Check default value is true or not
1969 bool value = settings->IsAutofillPasswordFormEnabled();
1970 DALI_TEST_CHECK( value );
1971 settings->EnableAutofillPasswordForm( false );
1972 value = settings->IsAutofillPasswordFormEnabled();
1973 DALI_TEST_CHECK( !value );
1977 int UtcDaliWebSettingsCheckEnableFormCandidateData(void)
1979 ToolkitTestApplication application;
1981 WebView view = WebView::New();
1982 DALI_TEST_CHECK( view );
1984 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1985 DALI_TEST_CHECK( settings != 0 );
1988 settings->AllowMixedContents( false );
1989 settings->EnableSpatialNavigation( false );
1990 settings->EnableWebSecurity( false );
1991 settings->EnableCacheBuilder( false );
1992 settings->EnableDoNotTrack( false );
1993 settings->UseScrollbarThumbFocusNotifications( false );
1994 settings->AllowFileAccessFromExternalUrl( false );
1995 settings->AllowScriptsOpenWindows( false );
1997 // Check default value is true or not
1998 bool value = settings->IsFormCandidateDataEnabled();
1999 DALI_TEST_CHECK( value );
2001 // Check Set/GetProperty
2002 settings->EnableFormCandidateData( false );
2003 value = settings->IsFormCandidateDataEnabled();
2004 DALI_TEST_CHECK( !value );
2009 int UtcDaliWebSettingsCheckEnableTextSelection(void)
2011 ToolkitTestApplication application;
2013 WebView view = WebView::New();
2014 DALI_TEST_CHECK( view );
2016 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2017 DALI_TEST_CHECK( settings != 0 );
2020 settings->AllowMixedContents( false );
2021 settings->EnableSpatialNavigation( false );
2022 settings->EnableWebSecurity( false );
2023 settings->EnableCacheBuilder( false );
2024 settings->EnableDoNotTrack( false );
2025 settings->UseScrollbarThumbFocusNotifications( false );
2026 settings->AllowFileAccessFromExternalUrl( false );
2027 settings->AllowScriptsOpenWindows( false );
2029 // Check default value is true or not
2030 bool value = settings->IsTextSelectionEnabled();
2031 DALI_TEST_CHECK( value );
2033 //Check Set/GetProperty
2034 settings->EnableTextSelection(false);
2035 value = settings->IsTextSelectionEnabled();
2036 DALI_TEST_CHECK( !value );
2041 int UtcDaliWebSettingsCheckEnableTextAutosizing(void)
2043 ToolkitTestApplication application;
2045 WebView view = WebView::New();
2046 DALI_TEST_CHECK( view );
2048 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2049 DALI_TEST_CHECK( settings != 0 );
2052 settings->AllowMixedContents( false );
2053 settings->EnableSpatialNavigation( false );
2054 settings->EnableWebSecurity( false );
2055 settings->EnableCacheBuilder( false );
2056 settings->EnableDoNotTrack( false );
2057 settings->UseScrollbarThumbFocusNotifications( false );
2058 settings->AllowFileAccessFromExternalUrl( false );
2059 settings->AllowScriptsOpenWindows( false );
2061 // Check default value is true or not
2062 bool value = settings->IsTextAutosizingEnabled();
2063 DALI_TEST_CHECK( value );
2065 // Check Set/GetProperty
2066 settings->EnableTextAutosizing(false);
2067 value = settings->IsTextAutosizingEnabled();
2068 DALI_TEST_CHECK( !value );
2073 int UtcDaliWebSettingsCheckEnableArrowScroll(void)
2075 ToolkitTestApplication application;
2077 WebView view = WebView::New();
2078 DALI_TEST_CHECK( view );
2080 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2081 DALI_TEST_CHECK( settings != 0 );
2084 settings->AllowMixedContents( false );
2085 settings->EnableSpatialNavigation( false );
2086 settings->EnableWebSecurity( false );
2087 settings->EnableCacheBuilder( false );
2088 settings->EnableDoNotTrack( false );
2089 settings->UseScrollbarThumbFocusNotifications( false );
2090 settings->AllowFileAccessFromExternalUrl( false );
2091 settings->AllowScriptsOpenWindows( false );
2093 // Check default value is true or not
2094 bool value = settings->IsArrowScrollEnabled();
2095 DALI_TEST_CHECK( value );
2097 // Check Set/GetProperty
2098 settings->EnableArrowScroll(false);
2099 value = settings->IsArrowScrollEnabled();
2100 DALI_TEST_CHECK( !value );
2105 int UtcDaliWebSettingsCheckEnableClipboard(void)
2107 ToolkitTestApplication application;
2109 WebView view = WebView::New();
2110 DALI_TEST_CHECK( view );
2112 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2113 DALI_TEST_CHECK( settings != 0 );
2116 settings->AllowMixedContents( false );
2117 settings->EnableSpatialNavigation( false );
2118 settings->EnableWebSecurity( false );
2119 settings->EnableCacheBuilder( false );
2120 settings->EnableDoNotTrack( false );
2121 settings->UseScrollbarThumbFocusNotifications( false );
2122 settings->AllowFileAccessFromExternalUrl( false );
2123 settings->AllowScriptsOpenWindows( false );
2125 // Check default value is true or not
2126 bool value = settings->IsClipboardEnabled();
2127 DALI_TEST_CHECK( value );
2128 settings->EnableClipboard(false);
2129 value = settings->IsClipboardEnabled();
2130 DALI_TEST_CHECK( !value );
2134 int UtcDaliWebSettingsCheckEnableImePanel(void)
2136 ToolkitTestApplication application;
2138 WebView view = WebView::New();
2139 DALI_TEST_CHECK( view );
2141 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2142 DALI_TEST_CHECK( settings != 0 );
2145 settings->AllowMixedContents( false );
2146 settings->EnableSpatialNavigation( false );
2147 settings->EnableWebSecurity( false );
2148 settings->EnableCacheBuilder( false );
2149 settings->EnableDoNotTrack( false );
2150 settings->UseScrollbarThumbFocusNotifications( false );
2151 settings->AllowFileAccessFromExternalUrl( false );
2152 settings->AllowScriptsOpenWindows( false );
2154 // Check default value is true or not
2155 bool value = settings->IsImePanelEnabled();
2156 DALI_TEST_CHECK( value );
2158 // Check Set/GetProperty
2159 settings->EnableImePanel(false);
2160 value = settings->IsImePanelEnabled();
2161 DALI_TEST_CHECK( !value );
2166 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
2168 ToolkitTestApplication application;
2170 WebView view = WebView::New();
2171 DALI_TEST_CHECK( view );
2173 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2174 DALI_TEST_CHECK( settings != 0 )
2177 settings->AllowMixedContents( false );
2178 settings->EnableSpatialNavigation( false );
2179 settings->EnableWebSecurity( false );
2180 settings->EnableCacheBuilder( false );
2181 settings->EnableDoNotTrack( false );
2182 settings->UseScrollbarThumbFocusNotifications( false );
2183 settings->AllowFileAccessFromExternalUrl( false );
2184 settings->AllowScriptsOpenWindows( false );
2186 // Check default value is true or not
2187 bool value = settings->AreImagesLoadedAutomatically();
2188 DALI_TEST_CHECK( value );
2190 // Check Set/GetProperty
2191 settings->AllowImagesLoadAutomatically( false );
2192 value = settings->AreImagesLoadedAutomatically();
2193 DALI_TEST_CHECK( !value );
2198 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
2200 ToolkitTestApplication application;
2202 WebView view = WebView::New();
2203 DALI_TEST_CHECK( view );
2205 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2206 DALI_TEST_CHECK( settings != 0 )
2208 const std::string kDefaultValue;
2209 const std::string kTestValue = "UTF-8";
2212 settings->AllowMixedContents( false );
2213 settings->EnableSpatialNavigation( false );
2214 settings->EnableWebSecurity( false );
2215 settings->EnableCacheBuilder( false );
2216 settings->EnableDoNotTrack( false );
2217 settings->UseScrollbarThumbFocusNotifications( false );
2218 settings->AllowFileAccessFromExternalUrl( false );
2219 settings->AllowScriptsOpenWindows( false );
2221 // Check default value
2222 std::string value = settings->GetDefaultTextEncodingName();
2223 DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
2225 // Check Set/GetProperty
2226 settings->SetDefaultTextEncodingName( kTestValue );
2227 value = settings->GetDefaultTextEncodingName();
2228 DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );
2233 int UtcDaliWebSettingsSetViewportMetaTag(void)
2235 ToolkitTestApplication application;
2237 WebView view = WebView::New();
2238 DALI_TEST_CHECK( view );
2240 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2241 DALI_TEST_CHECK( settings != 0 )
2243 // Check the value is true or not
2244 bool value = settings->SetViewportMetaTag(true);
2245 DALI_TEST_CHECK( value );
2250 int UtcDaliWebSettingsSetForceZoom(void)
2252 ToolkitTestApplication application;
2254 WebView view = WebView::New();
2255 DALI_TEST_CHECK( view );
2257 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2258 DALI_TEST_CHECK( settings != 0 )
2260 // Check the value is true or not
2261 bool value = settings->SetForceZoom(true);
2262 DALI_TEST_CHECK( value );
2264 value = settings->IsZoomForced();
2265 DALI_TEST_CHECK( value );
2270 int UtcDaliWebSettingsSetTextZoomEnabled(void)
2272 ToolkitTestApplication application;
2274 WebView view = WebView::New();
2275 DALI_TEST_CHECK( view );
2277 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2278 DALI_TEST_CHECK( settings != 0 )
2280 // Check the value is true or not
2281 bool value = settings->SetTextZoomEnabled(true);
2282 DALI_TEST_CHECK( value );
2284 value = settings->IsTextZoomEnabled();
2285 DALI_TEST_CHECK( value );
2290 int UtcDaliWebSettingsSetExtraFeature(void)
2292 ToolkitTestApplication application;
2294 WebView view = WebView::New();
2295 DALI_TEST_CHECK( view );
2297 Dali::Toolkit::WebSettings* settings = view.GetSettings();
2298 DALI_TEST_CHECK( settings != 0 )
2300 // Check the value is true or not
2301 settings->SetExtraFeature("test", true);
2302 bool value = settings->IsExtraFeatureEnabled("test");
2303 DALI_TEST_CHECK( value );