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