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