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