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