Add some APIs into web view.
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-WebView.cpp
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 #include <iostream>
19 #include <stdlib.h>
20
21 #include <dali-toolkit-test-suite-utils.h>
22 #include "dali-toolkit-test-utils/toolkit-timer.h"
23
24 #include <dali.h>
25 #include <dali/integration-api/events/hover-event-integ.h>
26 #include <dali/integration-api/events/key-event-integ.h>
27 #include <dali/integration-api/events/touch-event-integ.h>
28 #include <dali/integration-api/events/wheel-event-integ.h>
29 #include <dali/public-api/images/pixel-data.h>
30 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
31 #include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
32 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list.h>
33 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list-item.h>
34 #include <dali-toolkit/devel-api/controls/web-view/web-context.h>
35 #include <dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h>
36 #include <dali-toolkit/devel-api/controls/web-view/web-form-repost-decision.h>
37 #include <dali-toolkit/devel-api/controls/web-view/web-settings.h>
38 #include <dali-toolkit/devel-api/controls/web-view/web-view.h>
39
40 using namespace Dali;
41 using namespace Toolkit;
42
43 namespace
44 {
45
46 const char* const TEST_URL1( "http://www.somewhere.valid1.com" );
47 const char* const TEST_URL2( "http://www.somewhere.valid2.com" );
48
49 static int gPageLoadStartedCallbackCalled = 0;
50 static int gPageLoadInProgressCallbackCalled = 0;
51 static int gPageLoadFinishedCallbackCalled = 0;
52 static int gScrollEdgeReachedCallbackCalled = 0;
53 static int gUrlChangedCallbackCalled = 0;
54 static int gEvaluateJavaScriptCallbackCalled = 0;
55 static int gJavaScriptAlertCallbackCalled = 0;
56 static int gJavaScriptConfirmCallbackCalled = 0;
57 static int gJavaScriptPromptCallbackCalled = 0;
58 static int gScreenshotCapturedCallbackCalled = 0;
59 static int gVideoPlayingCallbackCalled = 0;
60 static int gGeolocationPermissionCallbackCalled = 0;
61 static bool gTouched = false;
62 static bool gHovered = false;
63 static bool gWheelEventHandled = false;
64 static int gFormRepostDecisionCallbackCalled = 0;
65 static std::shared_ptr<Dali::Toolkit::WebFormRepostDecision> gFormRepostDecisionInstance;
66 static int gFrameRenderedCallbackCalled = 0;
67
68 struct CallbackFunctor
69 {
70   CallbackFunctor(bool* callbackFlag)
71   : mCallbackFlag( callbackFlag )
72   {
73   }
74
75   void operator()()
76   {
77     *mCallbackFlag = true;
78   }
79   bool* mCallbackFlag;
80 };
81
82 static void OnPageLoadStarted( WebView view, const std::string& url )
83 {
84   gPageLoadStartedCallbackCalled++;
85 }
86
87 static void OnPageLoadInProgress( WebView view, const std::string& url )
88 {
89   gPageLoadInProgressCallbackCalled++;
90 }
91
92 static void OnPageLoadFinished( WebView view, const std::string& url )
93 {
94   gPageLoadFinishedCallbackCalled++;
95 }
96
97 static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge edge )
98 {
99   gScrollEdgeReachedCallbackCalled++;
100 }
101
102 static void OnUrlChanged( WebView view, const std::string& url )
103 {
104   gUrlChangedCallbackCalled++;
105 }
106
107 static void OnPageLoadError( WebView view, const std::string& url, WebView::LoadErrorCode errorCode )
108 {
109 }
110
111 static void OnEvaluateJavaScript( const std::string& result )
112 {
113   gEvaluateJavaScriptCallbackCalled++;
114 }
115
116 static bool OnJavaScriptAlert( const std::string& result )
117 {
118   gJavaScriptAlertCallbackCalled++;
119   return true;
120 }
121
122 static bool OnJavaScriptConfirm( const std::string& result )
123 {
124   gJavaScriptConfirmCallbackCalled++;
125   return true;
126 }
127
128 static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& message2 )
129 {
130   gJavaScriptPromptCallbackCalled++;
131   return true;
132 }
133
134 static void OnScreenshotCaptured(Dali::Toolkit::ImageView)
135 {
136   gScreenshotCapturedCallbackCalled++;\r
137 }
138
139 static void OnVideoPlaying(bool isPlaying)
140 {
141   gVideoPlayingCallbackCalled++;
142 }
143
144 static bool OnGeolocationPermission(const std::string&, const std::string&)
145 {
146   gGeolocationPermissionCallbackCalled++;
147   return true;
148 }
149
150 static bool OnTouched( Actor actor, const Dali::TouchEvent& touch )
151 {
152   gTouched = true;
153   return true;
154 }
155
156 static bool OnHovered( Actor actor, const Dali::HoverEvent& hover )
157 {
158   gHovered = true;
159   return true;
160 }
161
162 static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel )
163 {
164   gWheelEventHandled = true;
165   return true;
166 }
167
168 static void OnFormRepostDecision(WebView, std::shared_ptr<Dali::Toolkit::WebFormRepostDecision> decision)
169 {
170   gFormRepostDecisionCallbackCalled++;
171   gFormRepostDecisionInstance = decision;
172 }
173
174 static void OnFrameRendered(WebView)
175 {
176   gFrameRenderedCallbackCalled++;
177 }
178
179 } // namespace
180
181 void web_view_startup(void)
182 {
183   test_return_value = TET_UNDEF;
184 }
185
186 void web_view_cleanup(void)
187 {
188   test_return_value = TET_PASS;
189 }
190
191 int UtcDaliWebViewBasics(void)
192 {
193   ToolkitTestApplication application;
194
195   // Copy and Assignment Test
196   tet_infoline( "UtcDaliWebViewBasic Copy and Assignment Test" );
197   WebView view = WebView::New();
198   DALI_TEST_CHECK( view );
199
200   WebView copy( view );
201   DALI_TEST_CHECK( view == copy );
202
203   WebView assign;
204   DALI_TEST_CHECK( !assign );
205
206   assign = copy;
207   DALI_TEST_CHECK( assign == view );
208
209
210   // DownCast Test
211   tet_infoline( "UtcDaliWebViewBasic DownCast Test" );
212   BaseHandle handle(view);
213
214   WebView view2 = WebView::DownCast( handle );
215   DALI_TEST_CHECK( view );
216   DALI_TEST_CHECK( view2 );
217   DALI_TEST_CHECK( view == view2 );
218
219
220   // TypeRegistry Test
221   tet_infoline( "UtcDaliWebViewBasic TypeRegistry Test" );
222   TypeRegistry typeRegistry = TypeRegistry::Get();
223   DALI_TEST_CHECK( typeRegistry );
224
225   TypeInfo typeInfo = typeRegistry.GetTypeInfo( "WebView" );
226   DALI_TEST_CHECK( typeInfo );
227
228   BaseHandle handle2 = typeInfo.CreateInstance();
229   DALI_TEST_CHECK( handle2 );
230
231   WebView view3 = WebView::DownCast( handle2 );
232   DALI_TEST_CHECK( view3 );
233
234   END_TEST;
235 }
236
237 int UtcDaliWebViewPageNavigation(void)
238 {
239   ToolkitTestApplication application;
240
241   WebView view = WebView::New();
242   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
243   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
244   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
245   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
246   application.GetScene().Add( view );
247   application.SendNotification();
248   application.Render();
249   DALI_TEST_CHECK( view );
250
251   ConnectionTracker* testTracker = new ConnectionTracker();
252   view.PageLoadStartedSignal().Connect( &OnPageLoadStarted );
253   view.PageLoadInProgressSignal().Connect( &OnPageLoadInProgress );
254   view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished );
255   view.PageLoadErrorSignal().Connect( &OnPageLoadError );
256   view.UrlChangedSignal().Connect( &OnUrlChanged );
257   bool signal1 = false;
258   bool signal2 = false;
259   bool signal3 = false;
260   bool signal4 = false;
261   bool signal5 = false;
262   view.ConnectSignal( testTracker, "pageLoadStarted", CallbackFunctor(&signal1) );
263   view.ConnectSignal( testTracker, "pageLoadInProgress", CallbackFunctor(&signal2) );
264   view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal3) );
265   view.ConnectSignal( testTracker, "urlChanged", CallbackFunctor(&signal4) );
266   view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal5) );
267   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 0, TEST_LOCATION );
268   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 0, TEST_LOCATION );
269   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 0, TEST_LOCATION );
270   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 0, TEST_LOCATION );
271
272   view.LoadUrl( TEST_URL1 );
273   view.GetNaturalSize();
274   Test::EmitGlobalTimerSignal();
275   DALI_TEST_EQUALS( view.CanGoBack(), false, TEST_LOCATION );
276   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 1, TEST_LOCATION );
277   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 1, TEST_LOCATION );
278   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 1, TEST_LOCATION );
279   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 1, TEST_LOCATION );
280   DALI_TEST_CHECK( signal1 & signal2 & signal3 & signal4 );
281   DALI_TEST_CHECK( !signal5 );
282
283   view.LoadUrl( TEST_URL2 );
284   view.Suspend();
285   view.SetProperty( Actor::Property::SIZE, Vector2( 400, 300 ) );
286   application.SendNotification();
287   application.Render();
288   Test::EmitGlobalTimerSignal();
289   view.Resume();
290   DALI_TEST_EQUALS( view.CanGoBack(), true, TEST_LOCATION );
291   DALI_TEST_EQUALS( view.CanGoForward(), false, TEST_LOCATION );
292   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 2, TEST_LOCATION );
293   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 2, TEST_LOCATION );
294   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 2, TEST_LOCATION );
295   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 2, TEST_LOCATION );
296
297   view.GoBack();
298   Test::EmitGlobalTimerSignal();
299   DALI_TEST_CHECK( !view.CanGoBack() );
300   DALI_TEST_CHECK( view.CanGoForward() );
301
302   view.GoForward();
303   Test::EmitGlobalTimerSignal();
304   DALI_TEST_CHECK( view.CanGoBack() );
305   DALI_TEST_CHECK( !view.CanGoForward() );
306
307   view.Reload();
308   view.StopLoading();
309   view.ClearHistory();
310   Test::EmitGlobalTimerSignal();
311   DALI_TEST_CHECK( !view.CanGoBack() );
312   DALI_TEST_CHECK( !view.CanGoForward() );
313
314   END_TEST;
315 }
316
317 int UtcDaliWebViewTouchAndKeys(void)
318 {
319   ToolkitTestApplication application;
320
321   WebView view = WebView::New();
322   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
323   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
324   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
325   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
326
327   application.GetScene().Add( view );
328   application.SendNotification();
329   application.Render();
330
331   view.GetNaturalSize();
332   view.TouchedSignal().Connect( &OnTouched );
333
334   // Touch event
335   Dali::Integration::TouchEvent event;
336   Dali::Integration::Point pointDown, pointUp;
337
338   event = Dali::Integration::TouchEvent();
339   pointDown.SetState( PointState::DOWN );
340   pointDown.SetScreenPosition( Vector2( 10, 10 ) );
341   event.AddPoint( pointDown );
342   application.ProcessEvent( event );
343
344   event = Dali::Integration::TouchEvent();
345   pointUp.SetState( PointState::UP );
346   pointUp.SetScreenPosition( Vector2( 10, 10 ) );
347   event.AddPoint( pointUp );
348   application.ProcessEvent( event );
349
350   // Key event
351   Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( view );
352   application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) );
353   application.SendNotification();
354
355   DALI_TEST_CHECK( gTouched );
356   DALI_TEST_CHECK( view );
357
358   END_TEST;
359 }
360
361 int UtcDaliWebViewFocusGainedAndLost(void)
362 {
363   ToolkitTestApplication application;
364
365   WebView view = WebView::New();
366   DALI_TEST_CHECK( view );
367
368   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
369   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
370   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
371   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
372
373   application.GetScene().Add( view );
374   application.SendNotification();
375   application.Render();
376
377   view.SetKeyInputFocus();
378   DALI_TEST_CHECK( view.HasKeyInputFocus() );
379
380   // reset
381   view.ClearKeyInputFocus();
382   DALI_TEST_CHECK( !view.HasKeyInputFocus() );
383
384   END_TEST;
385 }
386
387 int UtcDaliWebViewPropertyPageZoomFactor(void)
388 {
389   ToolkitTestApplication application;
390
391   WebView view = WebView::New();
392   DALI_TEST_CHECK( view );
393
394   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
395   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
396   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
397   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
398
399   application.GetScene().Add( view );
400   application.SendNotification();
401   application.Render();
402
403   view.SetProperty( WebView::Property::PAGE_ZOOM_FACTOR, 1.5f);
404   float zoomFactor = view.GetProperty<float>( WebView::Property::PAGE_ZOOM_FACTOR );
405   DALI_TEST_EQUALS( zoomFactor, 1.5f, TEST_LOCATION );
406
407   view.SetProperty( WebView::Property::PAGE_ZOOM_FACTOR, 1.0f);
408   zoomFactor = view.GetProperty<float>( WebView::Property::PAGE_ZOOM_FACTOR );
409   DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION );
410
411   END_TEST;
412 }
413
414 int UtcDaliWebViewPropertyTextZoomFactor(void)
415 {
416   ToolkitTestApplication application;
417
418   WebView view = WebView::New();
419   DALI_TEST_CHECK( view );
420
421   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
422   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
423   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
424   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
425
426   application.GetScene().Add( view );
427   application.SendNotification();
428   application.Render();
429
430   view.SetProperty( WebView::Property::TEXT_ZOOM_FACTOR, 1.5f);
431   float zoomFactor = view.GetProperty<float>( WebView::Property::TEXT_ZOOM_FACTOR );
432   DALI_TEST_EQUALS( zoomFactor, 1.5f, TEST_LOCATION );
433
434   view.SetProperty( WebView::Property::TEXT_ZOOM_FACTOR, 1.0f);
435   zoomFactor = view.GetProperty<float>( WebView::Property::TEXT_ZOOM_FACTOR );
436   DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION );
437
438   END_TEST;
439 }
440
441 int UtcDaliWebViewPropertyLoadProgressPercentage(void)
442 {
443   ToolkitTestApplication application;
444
445   WebView view = WebView::New();
446   DALI_TEST_CHECK( view );
447
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
453   application.GetScene().Add( view );
454   application.SendNotification();
455   application.Render();
456
457   float percentage = view.GetProperty<float>( WebView::Property::LOAD_PROGRESS_PERCENTAGE );
458   DALI_TEST_EQUALS( percentage, 0.5f, TEST_LOCATION );
459
460   END_TEST;
461 }
462
463 int UtcDaliWebViewMove(void)
464 {
465   ToolkitTestApplication application;
466
467   WebView view = WebView::New();
468   DALI_TEST_CHECK( view );
469
470   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
471   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
472   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
473   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
474
475   application.GetScene().Add( view );
476   application.SendNotification();
477   application.Render();
478
479   view.SetProperty( Actor::Property::POSITION, Vector2( 100, 100 ));
480   Vector3 viewPos = view.GetProperty<Vector3>( Actor::Property::POSITION );
481   DALI_TEST_EQUALS( viewPos, Vector3( 100, 100, 0 ), TEST_LOCATION );
482
483   END_TEST;
484 }
485
486 int UtcDaliWebViewPropertyVideoHoleEnabled(void)
487 {
488   ToolkitTestApplication application;
489
490   WebView view = WebView::New();
491   DALI_TEST_CHECK( view );
492
493   const bool kDefaultValue = true;
494   const bool kTestValue = false;
495
496   // Check default value
497   bool output;
498   Property::Value value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
499   DALI_TEST_CHECK( value.Get( output ) );
500   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
501
502   // Check Set/GetProperty
503   view.SetProperty( WebView::Property::VIDEO_HOLE_ENABLED, kTestValue );
504   value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
505   DALI_TEST_CHECK( value.Get( output ) );
506   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
507
508   END_TEST;
509 }
510
511 int UtcDaliWebViewPropertyMouseEventsEnabled(void)
512 {
513   ToolkitTestApplication application;
514
515   WebView view = WebView::New();
516   DALI_TEST_CHECK( view );
517
518   const bool kDefaultValue = true;
519   const bool kTestValue = false;
520
521   // Check default value
522   bool output;
523   Property::Value value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
524   DALI_TEST_CHECK( value.Get( output ) );
525   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
526
527   // Check Set/GetProperty
528   view.SetProperty( WebView::Property::MOUSE_EVENTS_ENABLED, kTestValue );
529   value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
530   DALI_TEST_CHECK( value.Get( output ) );
531   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
532
533   END_TEST;
534 }
535
536 int UtcDaliWebViewPropertyKeyEventsEnabled(void)
537 {
538   ToolkitTestApplication application;
539
540   WebView view = WebView::New();
541   DALI_TEST_CHECK( view );
542
543   const bool kDefaultValue = true;
544   const bool kTestValue = false;
545
546   // Check default value
547   bool output;
548   Property::Value value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
549   DALI_TEST_CHECK( value.Get( output ) );
550   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
551
552   // Check Set/GetProperty
553   view.SetProperty( WebView::Property::KEY_EVENTS_ENABLED, kTestValue );
554   value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
555   DALI_TEST_CHECK( value.Get( output ) );
556   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
557
558   END_TEST;
559 }
560
561 int UtcDaliWebViewHoverAndWheel(void)
562 {
563   ToolkitTestApplication application;
564
565   WebView view = WebView::New();
566   DALI_TEST_CHECK( view );
567   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
568   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
569   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
570   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
571
572   application.GetScene().Add( view );
573   application.SendNotification();
574   application.Render();
575
576   view.GetNaturalSize();
577   view.HoveredSignal().Connect( &OnHovered );
578   view.WheelEventSignal().Connect( &OnWheelEvent );
579
580   // Hover event
581   Dali::Integration::HoverEvent event = Dali::Integration::HoverEvent();
582   Dali::Integration::Point pointDown;
583   pointDown.SetState( PointState::DOWN );
584   pointDown.SetScreenPosition( Vector2( 10, 10 ) );
585   event.AddPoint( pointDown );
586   application.ProcessEvent( event );
587
588   event = Dali::Integration::HoverEvent();
589   Dali::Integration::Point pointUp;
590   pointUp.SetState( PointState::UP );
591   pointUp.SetScreenPosition( Vector2( 10, 10 ) );
592   event.AddPoint( pointUp );
593   application.ProcessEvent( event );
594
595   event = Dali::Integration::HoverEvent();
596   Dali::Integration::Point pointMotion;
597   pointUp.SetState( PointState::MOTION );
598   pointUp.SetScreenPosition( Vector2( 10, 10 ) );
599   event.AddPoint( pointMotion );
600   application.ProcessEvent( event );
601
602   // Wheel event
603   Dali::Integration::WheelEvent wheelEvent;
604   wheelEvent.type = Dali::Integration::WheelEvent::Type::MOUSE_WHEEL;
605   wheelEvent.direction = 0;
606   wheelEvent.point = Vector2( 20, 20 );
607   wheelEvent.delta = 10;
608   application.ProcessEvent( wheelEvent );
609   application.SendNotification();
610
611   DALI_TEST_CHECK( gHovered );
612   DALI_TEST_CHECK( gWheelEventHandled );
613
614   END_TEST;
615 }
616
617 int UtcDaliWebViewFormRepostDecisionFrameRendering(void)
618 {
619   ToolkitTestApplication application;
620
621   WebView view = WebView::New();
622   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
623   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
624   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
625   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
626   application.GetScene().Add( view );
627   application.SendNotification();
628   application.Render();
629   DALI_TEST_CHECK( view );
630
631   ConnectionTracker* testTracker = new ConnectionTracker();
632   view.FormRepostDecisionSignal().Connect(&OnFormRepostDecision);
633   view.FrameRenderedSignal().Connect(&OnFrameRendered);
634   bool signal1 = false;
635   bool signal2 = false;
636   view.ConnectSignal( testTracker, "formRepostDecision", CallbackFunctor(&signal1) );
637   view.ConnectSignal( testTracker, "frameRendered", CallbackFunctor(&signal2) );
638   DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 0, TEST_LOCATION );
639   DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 0, TEST_LOCATION );
640
641   view.LoadUrl( TEST_URL1 );
642   Test::EmitGlobalTimerSignal();
643   DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 1, TEST_LOCATION );
644   DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 1, TEST_LOCATION );
645   DALI_TEST_CHECK( signal1 & signal2);
646
647   // form repost decision.
648   DALI_TEST_CHECK(gFormRepostDecisionInstance);
649   gFormRepostDecisionInstance->Reply(true);
650
651   // reset
652   gFormRepostDecisionInstance = nullptr;
653
654   END_TEST;
655 }
656
657 int UtcDaliWebViewGetWebBackForwardList(void)
658 {
659   ToolkitTestApplication application;
660
661   WebView view = WebView::New();
662   DALI_TEST_CHECK( view );
663
664   Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
665   DALI_TEST_CHECK( bfList != 0 );
666
667   END_TEST;
668 }
669
670 int UtcDaliWebViewGetWebContext(void)
671 {
672   ToolkitTestApplication application;
673
674   WebView view = WebView::New();
675   DALI_TEST_CHECK( view );
676
677   Dali::Toolkit::WebContext* context = view.GetContext();
678   DALI_TEST_CHECK( context != 0 );
679
680   END_TEST;
681 }
682
683 int UtcDaliWebViewGetWebCookieManager(void)
684 {
685   ToolkitTestApplication application;
686
687   WebView view = WebView::New();
688   DALI_TEST_CHECK( view );
689
690   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
691   DALI_TEST_CHECK( cookieManager != 0 );
692
693   END_TEST;
694 }
695
696 int UtcDaliWebViewGetWebSettings(void)
697 {
698   ToolkitTestApplication application;
699
700   WebView view = WebView::New();
701   DALI_TEST_CHECK( view );
702
703   Dali::Toolkit::WebSettings* settings = view.GetSettings();
704   DALI_TEST_CHECK( settings != 0 );
705
706   END_TEST;
707 }
708
709 int UtcDaliWebViewProperty1(void)
710 {
711   // URL
712   ToolkitTestApplication application;
713
714   WebView view = WebView::New();
715   DALI_TEST_CHECK( view );
716
717   std::string local;
718   view.SetProperty( WebView::Property::URL, TEST_URL1 );
719   Property::Value val = view.GetProperty( WebView::Property::URL );
720   DALI_TEST_CHECK( val.Get( local ) );
721   DALI_TEST_EQUALS( local, TEST_URL1, TEST_LOCATION );
722
723   END_TEST;
724 }
725
726 int UtcDaliWebViewProperty4(void)
727 {
728   // USER_AGENT
729   ToolkitTestApplication application;
730
731   WebView view = WebView::New();
732   DALI_TEST_CHECK( view );
733
734   const std::string kDefaultValue;
735   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";
736
737   // Check default value
738   std::string output;
739   Property::Value value = view.GetProperty( WebView::Property::USER_AGENT );
740   DALI_TEST_CHECK( value.Get( output ) );
741   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
742
743   // Check Set/GetProperty
744   view.SetProperty( WebView::Property::USER_AGENT, kTestValue );
745   value = view.GetProperty( WebView::Property::USER_AGENT );
746   DALI_TEST_CHECK( value.Get( output ) );
747   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
748
749   END_TEST;
750 }
751
752 int UtcDaliWebViewProperty9(void)
753 {
754   // SCROLL_POSITION
755   ToolkitTestApplication application;
756
757   WebView view = WebView::New();
758   DALI_TEST_CHECK( view );
759
760   // Check default value
761   Dali::Vector2 output = Dali::Vector2::ONE;
762   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
763   DALI_TEST_CHECK( output.x == 0 && output.y == 0 );
764
765   // Check Set/GetProperty
766   Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
767   view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
768   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
769   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
770
771   // Check default value of scroll size
772   output = Dali::Vector2::ONE;
773   view.GetProperty( WebView::Property::SCROLL_SIZE ).Get( output );
774   DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
775
776   // Check default value of content size
777   output = Dali::Vector2::ONE;
778   view.GetProperty( WebView::Property::CONTENT_SIZE ).Get( output );
779   DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
780
781   END_TEST;
782 }
783
784 int UtcDaliWebViewPropertyBackgroundColorSelectedTextEtc(void)
785 {
786   ToolkitTestApplication application;
787
788   WebView view = WebView::New();
789   DALI_TEST_CHECK( view );
790
791   Dali::Vector4 testValue = Dali::Vector4(0.0f, 0.0f, 0.0f, 0.0f);
792   view.SetProperty(WebView::Property::DOCUMENT_BACKGROUND_COLOR, testValue);
793   view.SetProperty(WebView::Property::TILES_CLEARED_WHEN_HIDDEN, true);
794   view.SetProperty(WebView::Property::TILE_COVER_AREA_MULTIPLIER, 1.0f);
795   view.SetProperty(WebView::Property::CURSOR_ENABLED_BY_CLIENT, true);
796
797   // Check default value
798   std::string testText("test");
799   std::string output;
800   view.GetProperty(WebView::Property::SELECTED_TEXT).Get(output);
801   DALI_TEST_EQUALS(output, testText, TEST_LOCATION);
802
803   END_TEST;
804 }
805
806 int UtcDaliWebViewPropertyTitleFavicon(void)
807 {
808   ToolkitTestApplication application;
809
810   char argv[] = "--test";
811   WebView view = WebView::New( 1, (char**)&argv );
812   DALI_TEST_CHECK( view );
813
814   // reset something
815   view.ClearAllTilesResources();
816
817   // Check default value of title
818   std::string testValue("title");
819   std::string output;
820   view.GetProperty( WebView::Property::TITLE ).Get( output );
821   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
822
823   // Check default value of favicon
824   Dali::Toolkit::ImageView* favicon = &view.GetFavicon();
825   DALI_TEST_CHECK( favicon );
826   Dali::Vector3 iconsize = favicon->GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
827   DALI_TEST_CHECK( ( int )iconsize.width == 2 && ( int )iconsize.height == 2 );
828
829   END_TEST;
830 }
831
832 int UtcDaliWebViewScrollBy(void)
833 {
834   ToolkitTestApplication application;
835
836   WebView view = WebView::New();
837   DALI_TEST_CHECK( view );
838
839   // load url.
840   ConnectionTracker* testTracker = new ConnectionTracker();
841   view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
842   bool signal1 = false;
843   view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
844   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
845
846   view.LoadUrl( TEST_URL1 );
847   Test::EmitGlobalTimerSignal();
848
849   // set scroll position.
850   Dali::Vector2 output = Dali::Vector2::ONE;
851   Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
852   view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
853   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
854   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
855
856   // scroll by and trigger scrollEdgeReached event.
857   view.ScrollBy( 50, 50 );
858   Test::EmitGlobalTimerSignal();
859
860   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
861   DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
862   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
863   DALI_TEST_CHECK( signal1 );
864
865   // scroll by and trigger scrollEdgeReached event.
866   bool result = view.ScrollEdgeBy( 50, 50 );
867   DALI_TEST_CHECK( result );
868   Test::EmitGlobalTimerSignal();
869
870   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
871   DALI_TEST_CHECK( output.x == 200 && output.y == 200 );
872   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 2, TEST_LOCATION );
873   DALI_TEST_CHECK( signal1 );
874
875   END_TEST;
876 }
877
878 int UtcDaliWebViewSetGetScaleFactorActivateAccessibility(void)
879 {
880   ToolkitTestApplication application;
881
882   WebView view = WebView::New();
883   DALI_TEST_CHECK( view );
884
885   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
886   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
887   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
888   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
889
890   application.GetScene().Add( view );
891   application.SendNotification();
892   application.Render();
893
894   view.ActivateAccessibility(true);
895   view.AddDynamicCertificatePath("host", "test/to/path");
896   bool found = view.HighlightText("test", Dali::WebEnginePlugin::FindOption::CASE_INSENSITIVE, 2);
897   DALI_TEST_CHECK( found );
898
899   view.SetScaleFactor(1.5f, Dali::Vector2(0.0f, 0.0f));
900   float result = view.GetScaleFactor();
901   DALI_TEST_EQUALS( result, 1.5f, TEST_LOCATION );
902
903   view.SetScaleFactor(1.0f, Dali::Vector2(0.0f, 0.0f));
904   result = view.GetScaleFactor();
905   DALI_TEST_EQUALS( result, 1.0f, TEST_LOCATION );
906
907   END_TEST;
908 }
909
910 int UtcDaliWebViewGetScreenshotSyncAndAsync(void)
911 {
912   // SCROLL_POSITION
913   ToolkitTestApplication application;
914
915   char argv[] = "--test";
916   WebView view = WebView::New( 1, (char**)&argv );
917   DALI_TEST_CHECK( view );
918
919   // Check GetScreenshot
920   Dali::Rect<int> viewArea;
921   viewArea.x = 100;
922   viewArea.y = 100;
923   viewArea.width = 10;
924   viewArea.height = 10;
925   Dali::Toolkit::ImageView screenshot = view.GetScreenshot(viewArea, 1.0f);
926   DALI_TEST_CHECK( screenshot );
927   Dali::Vector3 shotsize = screenshot.GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
928   DALI_TEST_CHECK( ( int )shotsize.width == viewArea.width && ( int )shotsize.height == viewArea.height );
929
930   // Check GetScreenshotAsynchronously
931   viewArea.x = 100;
932   viewArea.y = 100;
933   viewArea.width = 100;
934   viewArea.height = 100;
935   bool result = view.GetScreenshotAsynchronously(viewArea, 1.0f, &OnScreenshotCaptured);
936   DALI_TEST_CHECK( result );
937
938   Test::EmitGlobalTimerSignal();
939
940   Test::EmitGlobalTimerSignal();
941   DALI_TEST_EQUALS( gScreenshotCapturedCallbackCalled, 1, TEST_LOCATION );
942
943   END_TEST;
944 }
945
946 int UtcDaliWebViewVideoPlayingGeolocationPermission(void)
947 {
948   // SCROLL_POSITION
949   ToolkitTestApplication application;
950
951   char argv[] = "--test";
952   WebView view = WebView::New( 1, (char**)&argv );
953   DALI_TEST_CHECK( view );
954
955   // Check CheckVideoPlayingAsynchronously
956   bool result = view.CheckVideoPlayingAsynchronously(&OnVideoPlaying);
957   DALI_TEST_CHECK( result );
958   Test::EmitGlobalTimerSignal();
959   DALI_TEST_EQUALS( gVideoPlayingCallbackCalled, 1, TEST_LOCATION );
960
961   // Check RegisterGeolocationPermissionCallback
962   view.RegisterGeolocationPermissionCallback(&OnGeolocationPermission);
963   Test::EmitGlobalTimerSignal();
964   DALI_TEST_EQUALS( gGeolocationPermissionCallbackCalled, 1, TEST_LOCATION );
965
966   END_TEST;
967 }
968
969 int UtcDaliWebViewEvaluteJavaScript(void)
970 {
971   ToolkitTestApplication application;
972
973   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
974
975   view.LoadHtmlString( "<body>Hello World!</body>" );
976   view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
977   view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript );
978   Test::EmitGlobalTimerSignal();
979
980   DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION );
981
982   END_TEST;
983 }
984
985 int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void)
986 {
987   ToolkitTestApplication application;
988
989   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
990
991   view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert );
992   view.LoadHtmlString( "<head><script type='text/javascript'>alert('this is an alert popup.');</script></head><body>Hello World!</body>" );
993   view.JavaScriptAlertReply();
994   Test::EmitGlobalTimerSignal();
995   DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION );
996
997   view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm );
998   view.LoadHtmlString( "<head><script type='text/javascript'>confirm('this is a confirm popup.');</script></head><body>Hello World!</body>" );
999   view.JavaScriptConfirmReply( true );
1000   Test::EmitGlobalTimerSignal();
1001   DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION );
1002
1003   view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt );
1004   view.LoadHtmlString( "<head><script type='text/javascript'>prompt('this is a prompt popup.');</script></head><body>Hello World!</body>" );
1005   view.JavaScriptPromptReply( "it is a prompt." );
1006   Test::EmitGlobalTimerSignal();
1007   DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION );
1008
1009   END_TEST;
1010 }
1011
1012 int UtcDaliWebViewLoadHtmlStringOverrideCurrentEntryAndContents(void)
1013 {
1014   ToolkitTestApplication application;
1015
1016   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1017   DALI_TEST_CHECK( view );
1018
1019   std::string html("<body>Hello World!</body>");
1020   std::string basicUri("http://basicurl");
1021   std::string unreachableUrl("http://unreachableurl");
1022   bool result = view.LoadHtmlStringOverrideCurrentEntry( html, basicUri, unreachableUrl );
1023   DALI_TEST_CHECK( result );
1024
1025   application.SendNotification();
1026   application.Render();
1027   Test::EmitGlobalTimerSignal();
1028
1029   result = view.LoadContents( html, html.length(), "html/text", "utf-8", basicUri );
1030   DALI_TEST_CHECK( result );
1031
1032   END_TEST;
1033 }
1034
1035 int UtcDaliWebViewReloadSuspendResumeNetworkLoadingCustomHeader(void)
1036 {
1037   ToolkitTestApplication application;
1038
1039   WebView view = WebView::New();
1040   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1041   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1042   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1043   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1044
1045   application.GetScene().Add( view );
1046   application.SendNotification();
1047   application.Render();
1048   DALI_TEST_CHECK( view );
1049
1050   view.LoadUrl( "http://test.html" );
1051   bool result = view.AddCustomHeader("key", "value");
1052   DALI_TEST_CHECK( result );
1053
1054   result = view.ReloadWithoutCache();
1055   DALI_TEST_CHECK( result );
1056
1057   uint32_t portNumber = view.StartInspectorServer(5000);
1058   DALI_TEST_EQUALS( portNumber, 5000, TEST_LOCATION );
1059
1060   application.SendNotification();
1061   application.Render();
1062   Test::EmitGlobalTimerSignal();
1063
1064   result = view.StopInspectorServer();
1065   DALI_TEST_CHECK( result );
1066
1067   view.SuspendNetworkLoading();
1068
1069   result = view.RemoveCustomHeader("key");
1070   DALI_TEST_CHECK( result );
1071
1072   view.ResumeNetworkLoading();
1073
1074   END_TEST;
1075 }
1076
1077 int UtcDaliWebViewMethodsForCoverage(void)
1078 {
1079   ToolkitTestApplication application;
1080
1081   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1082
1083   view.LoadHtmlString( "<body>Hello World!</body>" );
1084   view.AddJavaScriptMessageHandler( "jsObject",
1085     []( const std::string& arg ) {
1086     }
1087   );
1088
1089   DALI_TEST_CHECK( view );
1090
1091   END_TEST;
1092 }
1093
1094 // test cases for web backforward list.
1095
1096 int UtcDaliWebBackForwardListCheckItem(void)
1097 {
1098   ToolkitTestApplication application;
1099
1100   WebView view = WebView::New();
1101   DALI_TEST_CHECK( view );
1102
1103   Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
1104   DALI_TEST_CHECK( bfList != 0 )
1105
1106   unsigned int itemCount = bfList->GetItemCount();
1107   DALI_TEST_CHECK( itemCount == 1 )
1108
1109   Dali::Toolkit::WebBackForwardListItem* citem = bfList->GetCurrentItem();
1110   DALI_TEST_CHECK( citem != 0 );
1111
1112   const std::string kDefaultUrl( "http://url" );
1113   std::string testValue = citem->GetUrl();
1114   DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION );
1115
1116   const std::string kDefaultTitle( "title" );
1117   testValue = citem->GetTitle();
1118   DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION );
1119
1120   const std::string kDefaultOriginalUrl( "http://originalurl" );
1121   testValue = citem->GetOriginalUrl();
1122   DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION );
1123
1124   Dali::Toolkit::WebBackForwardListItem* item = bfList->GetItemAtIndex( 0 );
1125   DALI_TEST_CHECK( item != 0 );
1126
1127   END_TEST;
1128 }
1129
1130 // test cases for web context.
1131
1132 int UtcDaliWebContextGetSetCacheModel(void)
1133 {
1134   ToolkitTestApplication application;
1135
1136   WebView view = WebView::New();
1137   DALI_TEST_CHECK( view );
1138
1139   Dali::Toolkit::WebContext* context = view.GetContext();
1140   DALI_TEST_CHECK( context != 0 )
1141
1142   std::string kDefaultValue;
1143
1144   // Reset something
1145   context->SetProxyUri( kDefaultValue );
1146   context->SetCertificateFilePath( kDefaultValue );
1147   context->DisableCache( false );
1148   context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
1149   context->DeleteWebDatabase();
1150   context->DeleteWebStorage();
1151   context->DeleteLocalFileSystem();
1152   context->ClearCache();
1153
1154   // Check default value
1155   Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
1156   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
1157
1158   // Check Set/GetProperty
1159   context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1160   value = context->GetCacheModel();
1161   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1162
1163   END_TEST;
1164 }
1165
1166 // test cases for web cookie manager.
1167
1168 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
1169 {
1170   ToolkitTestApplication application;
1171
1172   WebView view = WebView::New();
1173   DALI_TEST_CHECK( view );
1174
1175   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1176   DALI_TEST_CHECK( cookieManager != 0 )
1177
1178   const std::string kDefaultValue;
1179
1180   // Reset something
1181   cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
1182   cookieManager->ClearCookies();
1183
1184   // Check default value
1185   Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
1186   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
1187
1188   // Check Set/GetProperty
1189   cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1190   value = cookieManager->GetCookieAcceptPolicy();
1191   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1192
1193   END_TEST;
1194 }
1195
1196 // test cases for web settings.
1197
1198 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
1199 {
1200   ToolkitTestApplication application;
1201
1202   WebView view = WebView::New();
1203   DALI_TEST_CHECK( view );
1204
1205   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1206   DALI_TEST_CHECK( settings != 0 )
1207
1208   // Reset something
1209   settings->AllowMixedContents( false );
1210   settings->EnableSpatialNavigation( false );
1211   settings->EnableWebSecurity( false );
1212   settings->EnableCacheBuilder( false );
1213   settings->EnableDoNotTrack( false );
1214   settings->UseScrollbarThumbFocusNotifications( false );
1215   settings->AllowFileAccessFromExternalUrl( false );
1216   settings->AllowScriptsOpenWindows( false );
1217
1218   // Check default value
1219   int value = settings->GetDefaultFontSize();
1220   DALI_TEST_CHECK( value == 16 );
1221
1222   // Check Set/GetProperty
1223   settings->SetDefaultFontSize( 20 );
1224   value = settings->GetDefaultFontSize();
1225   DALI_TEST_CHECK( value == 20 );
1226
1227   END_TEST;
1228 }
1229
1230 int UtcDaliWebSettingsCheckEnableJavaScript(void)
1231 {
1232   ToolkitTestApplication application;
1233
1234   WebView view = WebView::New();
1235   DALI_TEST_CHECK( view );
1236
1237   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1238   DALI_TEST_CHECK( settings != 0 )
1239
1240   // Reset something
1241   settings->AllowMixedContents( false );
1242   settings->EnableSpatialNavigation( false );
1243   settings->EnableWebSecurity( false );
1244   settings->EnableCacheBuilder( false );
1245   settings->EnableDoNotTrack( false );
1246   settings->UseScrollbarThumbFocusNotifications( false );
1247   settings->AllowFileAccessFromExternalUrl( false );
1248   settings->AllowScriptsOpenWindows( false );
1249
1250   // Check default value is true or not
1251   bool value = settings->IsJavaScriptEnabled();
1252   DALI_TEST_CHECK( value );
1253
1254   // Check Set/GetProperty
1255   settings->EnableJavaScript( false );
1256   value = settings->IsJavaScriptEnabled();
1257   DALI_TEST_CHECK( !value );
1258
1259   END_TEST;
1260 }
1261
1262 int UtcDaliWebSettingsCheckEnableAutoFitting(void)
1263 {
1264   ToolkitTestApplication application;
1265
1266   WebView view = WebView::New();
1267   DALI_TEST_CHECK( view );
1268
1269   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1270   DALI_TEST_CHECK( settings != 0 )
1271
1272   // Reset something
1273   settings->AllowMixedContents( false );
1274   settings->EnableSpatialNavigation( false );
1275   settings->EnableWebSecurity( false );
1276   settings->EnableCacheBuilder( false );
1277   settings->EnableDoNotTrack( false );
1278   settings->UseScrollbarThumbFocusNotifications( false );
1279   settings->AllowFileAccessFromExternalUrl( false );
1280   settings->AllowScriptsOpenWindows( false );
1281
1282   // Check default value is true or not
1283   bool value = settings->IsAutoFittingEnabled();
1284   DALI_TEST_CHECK( value );
1285
1286   // Check Set/GetProperty
1287   settings->EnableAutoFitting( false );
1288   value = settings->IsAutoFittingEnabled();
1289   DALI_TEST_CHECK( !value );
1290
1291   END_TEST;
1292 }
1293
1294 int UtcDaliWebSettingsCheckEnablePlugins(void)
1295 {
1296   ToolkitTestApplication application;
1297
1298   WebView view = WebView::New();
1299   DALI_TEST_CHECK( view );
1300
1301   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1302   DALI_TEST_CHECK( settings != 0 )
1303
1304   // Reset something
1305   settings->AllowMixedContents( false );
1306   settings->EnableSpatialNavigation( false );
1307   settings->EnableWebSecurity( false );
1308   settings->EnableCacheBuilder( false );
1309   settings->EnableDoNotTrack( false );
1310   settings->UseScrollbarThumbFocusNotifications( false );
1311   settings->AllowFileAccessFromExternalUrl( false );
1312   settings->AllowScriptsOpenWindows( false );
1313
1314   // Check default value is true or not
1315   bool value = settings->ArePluginsEnabled();
1316   DALI_TEST_CHECK( value );
1317
1318   // Check Set/GetProperty
1319   settings->EnablePlugins( false );
1320   value = settings->ArePluginsEnabled();
1321   DALI_TEST_CHECK( !value );
1322
1323   END_TEST;
1324 }
1325
1326 int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void)
1327 {
1328   ToolkitTestApplication application;
1329
1330   WebView view = WebView::New();
1331   DALI_TEST_CHECK( view );
1332
1333   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1334   DALI_TEST_CHECK( settings != 0 )
1335
1336   // Reset something
1337   settings->AllowMixedContents( false );
1338   settings->EnableSpatialNavigation( false );
1339   settings->EnableWebSecurity( false );
1340   settings->EnableCacheBuilder( false );
1341   settings->EnableDoNotTrack( false );
1342   settings->UseScrollbarThumbFocusNotifications( false );
1343   settings->AllowFileAccessFromExternalUrl( false );
1344   settings->AllowScriptsOpenWindows( false );
1345
1346   // Check default value is true or not
1347   bool value = settings->IsPrivateBrowsingEnabled();
1348   DALI_TEST_CHECK( value );
1349
1350   // Check Set/GetProperty
1351   settings->EnablePrivateBrowsing( false );
1352   value = settings->IsPrivateBrowsingEnabled();
1353   DALI_TEST_CHECK( !value );
1354
1355   END_TEST;
1356 }
1357
1358 int UtcDaliWebSettingsCheckEnableLinkMagnifier(void)
1359 {
1360   ToolkitTestApplication application;
1361
1362   WebView view = WebView::New();
1363   DALI_TEST_CHECK( view );
1364
1365   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1366   DALI_TEST_CHECK( settings != 0 )
1367
1368   // Reset something
1369   settings->AllowMixedContents( false );
1370   settings->EnableSpatialNavigation( false );
1371   settings->EnableWebSecurity( false );
1372   settings->EnableCacheBuilder( false );
1373   settings->EnableDoNotTrack( false );
1374   settings->UseScrollbarThumbFocusNotifications( false );
1375   settings->AllowFileAccessFromExternalUrl( false );
1376   settings->AllowScriptsOpenWindows( false );
1377
1378   // Check default value is true or not
1379   bool value = settings->IsLinkMagnifierEnabled();
1380   DALI_TEST_CHECK( value );
1381
1382   // Check Set/GetProperty
1383   settings->EnableLinkMagnifier( false );
1384   value = settings->IsLinkMagnifierEnabled();
1385   DALI_TEST_CHECK( !value );
1386
1387   END_TEST;
1388 }
1389
1390 int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void)
1391 {
1392   ToolkitTestApplication application;
1393
1394   WebView view = WebView::New();
1395   DALI_TEST_CHECK( view );
1396
1397   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1398   DALI_TEST_CHECK( settings != 0 )
1399
1400   // Reset something
1401   settings->AllowMixedContents( false );
1402   settings->EnableSpatialNavigation( false );
1403   settings->EnableWebSecurity( false );
1404   settings->EnableCacheBuilder( false );
1405   settings->EnableDoNotTrack( false );
1406   settings->UseScrollbarThumbFocusNotifications( false );
1407   settings->AllowFileAccessFromExternalUrl( false );
1408   settings->AllowScriptsOpenWindows( false );
1409
1410   // Check default value is true or not
1411   bool value = settings->IsKeypadWithoutUserActionUsed();
1412   DALI_TEST_CHECK( value );
1413
1414   // Check Set/GetProperty
1415   settings->UseKeypadWithoutUserAction( false );
1416   value = settings->IsKeypadWithoutUserActionUsed();
1417   DALI_TEST_CHECK( !value );
1418
1419   END_TEST;
1420 }
1421
1422 int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void)
1423 {
1424   ToolkitTestApplication application;
1425
1426   WebView view = WebView::New();
1427   DALI_TEST_CHECK( view );
1428
1429   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1430   DALI_TEST_CHECK( settings != 0 )
1431
1432   // Reset something
1433   settings->AllowMixedContents( false );
1434   settings->EnableSpatialNavigation( false );
1435   settings->EnableWebSecurity( false );
1436   settings->EnableCacheBuilder( false );
1437   settings->EnableDoNotTrack( false );
1438   settings->UseScrollbarThumbFocusNotifications( false );
1439   settings->AllowFileAccessFromExternalUrl( false );
1440   settings->AllowScriptsOpenWindows( false );
1441
1442   // Check default value is true or not
1443   bool value = settings->IsAutofillPasswordFormEnabled();
1444   DALI_TEST_CHECK( value );
1445   settings->EnableAutofillPasswordForm( false );
1446   value = settings->IsAutofillPasswordFormEnabled();
1447   DALI_TEST_CHECK( !value );
1448   END_TEST;
1449 }
1450
1451 int UtcDaliWebSettingsCheckEnableFormCandidateData(void)
1452 {
1453   ToolkitTestApplication application;
1454
1455   WebView view = WebView::New();
1456   DALI_TEST_CHECK( view );
1457
1458   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1459   DALI_TEST_CHECK( settings != 0 );
1460
1461   // Reset something
1462   settings->AllowMixedContents( false );
1463   settings->EnableSpatialNavigation( false );
1464   settings->EnableWebSecurity( false );
1465   settings->EnableCacheBuilder( false );
1466   settings->EnableDoNotTrack( false );
1467   settings->UseScrollbarThumbFocusNotifications( false );
1468   settings->AllowFileAccessFromExternalUrl( false );
1469   settings->AllowScriptsOpenWindows( false );
1470
1471   // Check default value is true or not
1472   bool value = settings->IsFormCandidateDataEnabled();
1473   DALI_TEST_CHECK( value );
1474
1475   // Check Set/GetProperty
1476   settings->EnableFormCandidateData( false );
1477   value = settings->IsFormCandidateDataEnabled();
1478   DALI_TEST_CHECK( !value );
1479
1480   END_TEST;
1481 }
1482
1483 int UtcDaliWebSettingsCheckEnableTextSelection(void)
1484 {
1485   ToolkitTestApplication application;
1486
1487   WebView view = WebView::New();
1488   DALI_TEST_CHECK( view );
1489
1490   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1491   DALI_TEST_CHECK( settings != 0 );
1492
1493   // Reset something
1494   settings->AllowMixedContents( false );
1495   settings->EnableSpatialNavigation( false );
1496   settings->EnableWebSecurity( false );
1497   settings->EnableCacheBuilder( false );
1498   settings->EnableDoNotTrack( false );
1499   settings->UseScrollbarThumbFocusNotifications( false );
1500   settings->AllowFileAccessFromExternalUrl( false );
1501   settings->AllowScriptsOpenWindows( false );
1502
1503   // Check default value is true or not
1504   bool value = settings->IsTextSelectionEnabled();
1505   DALI_TEST_CHECK( value );
1506
1507   //Check Set/GetProperty
1508   settings->EnableTextSelection(false);
1509   value = settings->IsTextSelectionEnabled();
1510   DALI_TEST_CHECK( !value );
1511
1512   END_TEST;
1513 }
1514
1515 int UtcDaliWebSettingsCheckEnableTextAutosizing(void)
1516 {
1517   ToolkitTestApplication application;
1518
1519   WebView view = WebView::New();
1520   DALI_TEST_CHECK( view );
1521
1522   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1523   DALI_TEST_CHECK( settings != 0 );
1524
1525   // Reset something
1526   settings->AllowMixedContents( false );
1527   settings->EnableSpatialNavigation( false );
1528   settings->EnableWebSecurity( false );
1529   settings->EnableCacheBuilder( false );
1530   settings->EnableDoNotTrack( false );
1531   settings->UseScrollbarThumbFocusNotifications( false );
1532   settings->AllowFileAccessFromExternalUrl( false );
1533   settings->AllowScriptsOpenWindows( false );
1534
1535   // Check default value is true or not
1536   bool value = settings->IsTextAutosizingEnabled();
1537   DALI_TEST_CHECK( value );
1538
1539   // Check Set/GetProperty
1540   settings->EnableTextAutosizing(false);
1541   value = settings->IsTextAutosizingEnabled();
1542   DALI_TEST_CHECK( !value );
1543
1544   END_TEST;
1545 }
1546
1547 int UtcDaliWebSettingsCheckEnableArrowScroll(void)
1548 {
1549   ToolkitTestApplication application;
1550
1551   WebView view = WebView::New();
1552   DALI_TEST_CHECK( view );
1553
1554   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1555   DALI_TEST_CHECK( settings != 0 );
1556
1557   // Reset something
1558   settings->AllowMixedContents( false );
1559   settings->EnableSpatialNavigation( false );
1560   settings->EnableWebSecurity( false );
1561   settings->EnableCacheBuilder( false );
1562   settings->EnableDoNotTrack( false );
1563   settings->UseScrollbarThumbFocusNotifications( false );
1564   settings->AllowFileAccessFromExternalUrl( false );
1565   settings->AllowScriptsOpenWindows( false );
1566
1567   // Check default value is true or not
1568   bool value = settings->IsArrowScrollEnabled();
1569   DALI_TEST_CHECK( value );
1570
1571   // Check Set/GetProperty
1572   settings->EnableArrowScroll(false);
1573   value = settings->IsArrowScrollEnabled();
1574   DALI_TEST_CHECK( !value );
1575
1576   END_TEST;
1577 }
1578
1579 int UtcDaliWebSettingsCheckEnableClipboard(void)
1580 {
1581   ToolkitTestApplication application;
1582
1583   WebView view = WebView::New();
1584   DALI_TEST_CHECK( view );
1585
1586   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1587   DALI_TEST_CHECK( settings != 0 );
1588
1589   // Reset something
1590   settings->AllowMixedContents( false );
1591   settings->EnableSpatialNavigation( false );
1592   settings->EnableWebSecurity( false );
1593   settings->EnableCacheBuilder( false );
1594   settings->EnableDoNotTrack( false );
1595   settings->UseScrollbarThumbFocusNotifications( false );
1596   settings->AllowFileAccessFromExternalUrl( false );
1597   settings->AllowScriptsOpenWindows( false );
1598
1599   // Check default value is true or not
1600   bool value = settings->IsClipboardEnabled();
1601   DALI_TEST_CHECK( value );
1602   settings->EnableClipboard(false);
1603   value = settings->IsClipboardEnabled();
1604   DALI_TEST_CHECK( !value );
1605   END_TEST;
1606 }
1607
1608 int UtcDaliWebSettingsCheckEnableImePanel(void)
1609 {
1610   ToolkitTestApplication application;
1611
1612   WebView view = WebView::New();
1613   DALI_TEST_CHECK( view );
1614
1615   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1616   DALI_TEST_CHECK( settings != 0 );
1617
1618   // Reset something
1619   settings->AllowMixedContents( false );
1620   settings->EnableSpatialNavigation( false );
1621   settings->EnableWebSecurity( false );
1622   settings->EnableCacheBuilder( false );
1623   settings->EnableDoNotTrack( false );
1624   settings->UseScrollbarThumbFocusNotifications( false );
1625   settings->AllowFileAccessFromExternalUrl( false );
1626   settings->AllowScriptsOpenWindows( false );
1627
1628   // Check default value is true or not
1629   bool value = settings->IsImePanelEnabled();
1630   DALI_TEST_CHECK( value );
1631
1632   // Check Set/GetProperty
1633   settings->EnableImePanel(false);
1634   value = settings->IsImePanelEnabled();
1635   DALI_TEST_CHECK( !value );
1636
1637   END_TEST;
1638 }
1639
1640 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
1641 {
1642   ToolkitTestApplication application;
1643
1644   WebView view = WebView::New();
1645   DALI_TEST_CHECK( view );
1646
1647   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1648   DALI_TEST_CHECK( settings != 0 )
1649
1650   // Reset something
1651   settings->AllowMixedContents( false );
1652   settings->EnableSpatialNavigation( false );
1653   settings->EnableWebSecurity( false );
1654   settings->EnableCacheBuilder( false );
1655   settings->EnableDoNotTrack( false );
1656   settings->UseScrollbarThumbFocusNotifications( false );
1657   settings->AllowFileAccessFromExternalUrl( false );
1658   settings->AllowScriptsOpenWindows( false );
1659
1660   // Check default value is true or not
1661   bool value = settings->AreImagesLoadedAutomatically();
1662   DALI_TEST_CHECK( value );
1663
1664   // Check Set/GetProperty
1665   settings->AllowImagesLoadAutomatically( false );
1666   value = settings->AreImagesLoadedAutomatically();
1667   DALI_TEST_CHECK( !value );
1668
1669   END_TEST;
1670 }
1671
1672 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
1673 {
1674   ToolkitTestApplication application;
1675
1676   WebView view = WebView::New();
1677   DALI_TEST_CHECK( view );
1678
1679   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1680   DALI_TEST_CHECK( settings != 0 )
1681
1682   const std::string kDefaultValue;
1683   const std::string kTestValue = "UTF-8";
1684
1685   // Reset something
1686   settings->AllowMixedContents( false );
1687   settings->EnableSpatialNavigation( false );
1688   settings->EnableWebSecurity( false );
1689   settings->EnableCacheBuilder( false );
1690   settings->EnableDoNotTrack( false );
1691   settings->UseScrollbarThumbFocusNotifications( false );
1692   settings->AllowFileAccessFromExternalUrl( false );
1693   settings->AllowScriptsOpenWindows( false );
1694
1695   // Check default value
1696   std::string value = settings->GetDefaultTextEncodingName();
1697   DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
1698
1699   // Check Set/GetProperty
1700   settings->SetDefaultTextEncodingName( kTestValue );
1701   value = settings->GetDefaultTextEncodingName();
1702   DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );
1703
1704   END_TEST;
1705 }
1706