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