a4ae7e1e69818c2dc3ac12aa85a8f55e3eace3f0
[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-context-menu.h>
28 #include <dali/devel-api/adaptor-framework/web-engine-context-menu-item.h>
29 #include <dali/devel-api/adaptor-framework/web-engine-form-repost-decision.h>
30 #include <dali/devel-api/adaptor-framework/web-engine-frame.h>
31 #include <dali/devel-api/adaptor-framework/web-engine-hit-test.h>
32 #include <dali/devel-api/adaptor-framework/web-engine-http-auth-handler.h>
33 #include <dali/devel-api/adaptor-framework/web-engine-load-error.h>
34 #include <dali/devel-api/adaptor-framework/web-engine-policy-decision.h>
35 #include <dali/devel-api/adaptor-framework/web-engine-request-interceptor.h>
36 #include <dali/devel-api/adaptor-framework/web-engine-context.h>
37 #include <dali/devel-api/adaptor-framework/web-engine-security-origin.h>
38 #include <dali/integration-api/events/hover-event-integ.h>
39 #include <dali/integration-api/events/key-event-integ.h>
40 #include <dali/integration-api/events/touch-event-integ.h>
41 #include <dali/integration-api/events/wheel-event-integ.h>
42 #include <dali/public-api/images/pixel-data.h>
43 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
44 #include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
45 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list.h>
46 #include <dali-toolkit/devel-api/controls/web-view/web-context.h>
47 #include <dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h>
48 #include <dali-toolkit/devel-api/controls/web-view/web-settings.h>
49 #include <dali-toolkit/devel-api/controls/web-view/web-view.h>
50
51 using namespace Dali;
52 using namespace Toolkit;
53
54 namespace
55 {
56
57 const char* const TEST_URL1( "http://www.somewhere.valid1.com" );
58 const char* const TEST_URL2( "http://www.somewhere.valid2.com" );
59
60 static int gPageLoadStartedCallbackCalled = 0;
61 static int gPageLoadInProgressCallbackCalled = 0;
62 static int gPageLoadFinishedCallbackCalled = 0;
63 static int gPageLoadErrorCallbackCalled = 0;
64 static std::shared_ptr<Dali::WebEngineLoadError> gPageLoadErrorInstance = nullptr;
65 static int gScrollEdgeReachedCallbackCalled = 0;
66 static int gUrlChangedCallbackCalled = 0;
67 static int gEvaluateJavaScriptCallbackCalled = 0;
68 static int gJavaScriptAlertCallbackCalled = 0;
69 static int gJavaScriptConfirmCallbackCalled = 0;
70 static int gJavaScriptPromptCallbackCalled = 0;
71 static int gScreenshotCapturedCallbackCalled = 0;
72 static int gVideoPlayingCallbackCalled = 0;
73 static int gGeolocationPermissionCallbackCalled = 0;
74 static bool gTouched = false;
75 static bool gHovered = false;
76 static bool gWheelEventHandled = false;
77 static int gFormRepostDecisionCallbackCalled = 0;
78 static std::shared_ptr<Dali::WebEngineFormRepostDecision> gFormRepostDecisionInstance = nullptr;
79 static int gFrameRenderedCallbackCalled = 0;
80 static int gRequestInterceptorCallbackCalled = 0;
81 static std::shared_ptr<Dali::WebEngineRequestInterceptor> gRequestInterceptorInstance = nullptr;
82 static int gConsoleMessageCallbackCalled = 0;
83 static std::shared_ptr<Dali::WebEngineConsoleMessage> gConsoleMessageInstance = nullptr;
84 static int gPolicyDecisionCallbackCalled = 0;
85 static std::shared_ptr<Dali::WebEnginePolicyDecision> gPolicyDecisionInstance = nullptr;
86 static int gCertificateConfirmCallbackCalled = 0;
87 static std::shared_ptr<Dali::WebEngineCertificate> gCertificateConfirmInstance = nullptr;
88 static int gSslCertificateChangedCallbackCalled = 0;
89 static std::shared_ptr<Dali::WebEngineCertificate> gSslCertificateInstance = nullptr;
90 static int gHttpAuthHandlerCallbackCalled = 0;
91 static std::shared_ptr<Dali::WebEngineHttpAuthHandler> gHttpAuthInstance = nullptr;
92 static int gSecurityOriginsAcquiredCallbackCalled = 0;
93 static int gStorageUsageAcquiredCallbackCalled = 0;
94 static int gFormPasswordsAcquiredCallbackCalled = 0;
95 static int gDownloadStartedCallbackCalled = 0;
96 static int gMimeOverriddenCallbackCalled = 0;
97 static std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>> gSecurityOriginList;
98 static std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>> gPasswordDataList;
99 static int gContextMenuCustomizedCallbackCalled = 0;
100 static std::shared_ptr<Dali::WebEngineContextMenu> gContextMenuInstance = nullptr;
101 static int gContextMenuItemSelectedCallbackCalled = 0;
102 static std::shared_ptr<Dali::WebEngineContextMenuItem> gContextMenuItemInstance = nullptr;
103 static int gHitTestCreatedCallbackCalled = 0;
104 static int gCookieManagerChangsWatchCallbackCalled = 0;
105
106 struct CallbackFunctor
107 {
108   CallbackFunctor(bool* callbackFlag)
109   : mCallbackFlag( callbackFlag )
110   {
111   }
112
113   void operator()()
114   {
115     *mCallbackFlag = true;
116   }
117   bool* mCallbackFlag;
118 };
119
120 static void OnPageLoadStarted( WebView view, const std::string& url )
121 {
122   gPageLoadStartedCallbackCalled++;
123 }
124
125 static void OnPageLoadInProgress( WebView view, const std::string& url )
126 {
127   gPageLoadInProgressCallbackCalled++;
128 }
129
130 static void OnPageLoadFinished( WebView view, const std::string& url )
131 {
132   gPageLoadFinishedCallbackCalled++;
133 }
134
135 static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge edge )
136 {
137   gScrollEdgeReachedCallbackCalled++;
138 }
139
140 static void OnPolicyDecisionRequest(WebView view, std::shared_ptr<Dali::WebEnginePolicyDecision> decision)
141 {
142   gPolicyDecisionCallbackCalled++;
143   gPolicyDecisionInstance = std::move(decision);
144 }
145
146 static void OnUrlChanged( WebView view, const std::string& url )
147 {
148   gUrlChangedCallbackCalled++;
149 }
150
151 static bool OnHitTestCreated(std::unique_ptr<Dali::WebEngineHitTest> test)
152 {
153   gHitTestCreatedCallbackCalled++;
154   return true;
155 }
156
157 static void OnPageLoadError(WebView view, std::shared_ptr<Dali::WebEngineLoadError> error)
158 {
159   gPageLoadErrorCallbackCalled++;
160   gPageLoadErrorInstance = std::move(error);
161 }
162
163 static void OnEvaluateJavaScript( const std::string& result )
164 {
165   gEvaluateJavaScriptCallbackCalled++;
166 }
167
168 static bool OnJavaScriptAlert( const std::string& result )
169 {
170   gJavaScriptAlertCallbackCalled++;
171   return true;
172 }
173
174 static bool OnJavaScriptConfirm( const std::string& result )
175 {
176   gJavaScriptConfirmCallbackCalled++;
177   return true;
178 }
179
180 static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& message2 )
181 {
182   gJavaScriptPromptCallbackCalled++;
183   return true;
184 }
185
186 static void OnScreenshotCaptured(Dali::Toolkit::ImageView)
187 {
188   gScreenshotCapturedCallbackCalled++;
189 }
190
191 static void OnVideoPlaying(bool isPlaying)
192 {
193   gVideoPlayingCallbackCalled++;
194 }
195
196 static bool OnGeolocationPermission(const std::string&, const std::string&)
197 {
198   gGeolocationPermissionCallbackCalled++;
199   return true;
200 }
201
202 static bool OnTouched( Actor actor, const Dali::TouchEvent& touch )
203 {
204   gTouched = true;
205   return true;
206 }
207
208 static void OnChangesWatch()
209 {
210   gCookieManagerChangsWatchCallbackCalled++;
211 }
212
213 static bool OnHovered( Actor actor, const Dali::HoverEvent& hover )
214 {
215   gHovered = true;
216   return true;
217 }
218
219 static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel )
220 {
221   gWheelEventHandled = true;
222   return true;
223 }
224
225 static void OnFormRepostDecision(WebView, std::shared_ptr<Dali::WebEngineFormRepostDecision> decision)
226 {
227   gFormRepostDecisionCallbackCalled++;
228   gFormRepostDecisionInstance = std::move(decision);
229 }
230
231 static void OnFrameRendered(WebView)
232 {
233   gFrameRenderedCallbackCalled++;
234 }
235
236 static void OnRequestInterceptor(WebView view, std::shared_ptr<Dali::WebEngineRequestInterceptor> interceptor)
237 {
238   gRequestInterceptorCallbackCalled++;
239   gRequestInterceptorInstance = std::move(interceptor);
240 }
241
242 static void OnConsoleMessage(WebView view, std::shared_ptr<Dali::WebEngineConsoleMessage> message)
243 {
244   gConsoleMessageCallbackCalled++;
245   gConsoleMessageInstance = std::move(message);
246 }
247
248 static void OnCertificateConfirm(WebView view, std::shared_ptr<Dali::WebEngineCertificate> certificate )
249 {
250   gCertificateConfirmCallbackCalled++;
251   gCertificateConfirmInstance = std::move(certificate);
252 }
253
254 static void OnSslCertificateChanged(WebView view, std::shared_ptr<Dali::WebEngineCertificate> certificate )
255 {
256   gSslCertificateChangedCallbackCalled++;
257   gSslCertificateInstance = std::move(certificate);
258 }
259
260 static void OnHttpAuthHandler( WebView view, std::shared_ptr<Dali::WebEngineHttpAuthHandler> hander )
261 {
262   gHttpAuthHandlerCallbackCalled++;
263   gHttpAuthInstance = std::move(hander);
264 }
265
266 static void OnSecurityOriginsAcquired(std::vector<std::unique_ptr<Dali::WebEngineSecurityOrigin>>& origins)
267 {
268   gSecurityOriginsAcquiredCallbackCalled++;
269   gSecurityOriginList.clear();
270   gSecurityOriginList.swap(origins);
271 }
272
273 static void OnStorageUsageAcquired(uint64_t usage)
274 {
275   gStorageUsageAcquiredCallbackCalled++;
276 }
277
278 static void OnFormPasswordsAcquired(std::vector<std::unique_ptr<Dali::WebEngineContext::PasswordData>>& passwords)
279 {
280   gFormPasswordsAcquiredCallbackCalled++;
281   gPasswordDataList.clear();
282   gPasswordDataList.swap(passwords);
283 }
284
285 static void OnDownloadStarted(const std::string& url)
286 {
287   gDownloadStartedCallbackCalled++;
288 }
289
290 static bool OnMimeOverridden(const std::string&, const std::string&, std::string&)
291 {
292   gMimeOverriddenCallbackCalled++;
293   return false;
294 }
295
296 static void OnContextMenuCustomized(WebView view, std::shared_ptr<Dali::WebEngineContextMenu> menu)
297 {
298   gContextMenuCustomizedCallbackCalled++;
299   gContextMenuInstance = std::move(menu);
300 }
301
302 static void OnContextMenuItemSelected(WebView view, std::shared_ptr<Dali::WebEngineContextMenuItem> item)
303 {
304   gContextMenuItemSelectedCallbackCalled++;
305   gContextMenuItemInstance = std::move(item);
306 }
307
308 } // namespace
309
310 void web_view_startup(void)
311 {
312   test_return_value = TET_UNDEF;
313 }
314
315 void web_view_cleanup(void)
316 {
317   test_return_value = TET_PASS;
318 }
319
320 int UtcDaliWebViewBasics(void)
321 {
322   ToolkitTestApplication application;
323
324   // Copy and Assignment Test
325   tet_infoline( "UtcDaliWebViewBasic Copy and Assignment Test" );
326   WebView view = WebView::New();
327   DALI_TEST_CHECK( view );
328
329   WebView copy( view );
330   DALI_TEST_CHECK( view == copy );
331
332   WebView assign;
333   DALI_TEST_CHECK( !assign );
334
335   assign = copy;
336   DALI_TEST_CHECK( assign == view );
337
338   // DownCast Test
339   tet_infoline( "UtcDaliWebViewBasic DownCast Test" );
340   BaseHandle handle(view);
341
342   WebView view2 = WebView::DownCast( handle );
343   DALI_TEST_CHECK( view );
344   DALI_TEST_CHECK( view2 );
345   DALI_TEST_CHECK( view == view2 );
346
347   // TypeRegistry Test
348   tet_infoline( "UtcDaliWebViewBasic TypeRegistry Test" );
349   TypeRegistry typeRegistry = TypeRegistry::Get();
350   DALI_TEST_CHECK( typeRegistry );
351
352   TypeInfo typeInfo = typeRegistry.GetTypeInfo( "WebView" );
353   DALI_TEST_CHECK( typeInfo );
354
355   BaseHandle handle2 = typeInfo.CreateInstance();
356   DALI_TEST_CHECK( handle2 );
357
358   WebView view3 = WebView::DownCast( handle2 );
359   DALI_TEST_CHECK( view3 );
360
361   END_TEST;
362 }
363
364 int UtcDaliWebViewPageNavigation(void)
365 {
366   ToolkitTestApplication application;
367
368   WebView view = WebView::New();
369   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
370   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
371   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
372   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
373   application.GetScene().Add( view );
374   application.SendNotification();
375   application.Render();
376   DALI_TEST_CHECK( view );
377
378   ConnectionTracker* testTracker = new ConnectionTracker();
379   view.PageLoadStartedSignal().Connect( &OnPageLoadStarted );
380   view.PageLoadInProgressSignal().Connect( &OnPageLoadInProgress );
381   view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished );
382   view.UrlChangedSignal().Connect( &OnUrlChanged );
383   bool signal1 = false;
384   bool signal2 = false;
385   bool signal3 = false;
386   bool signal4 = false;
387   bool signal5 = false;
388   view.ConnectSignal( testTracker, "pageLoadStarted", CallbackFunctor(&signal1) );
389   view.ConnectSignal( testTracker, "pageLoadInProgress", CallbackFunctor(&signal2) );
390   view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal3) );
391   view.ConnectSignal( testTracker, "urlChanged", CallbackFunctor(&signal4) );
392   view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal5) );
393   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 0, TEST_LOCATION );
394   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 0, TEST_LOCATION );
395   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 0, TEST_LOCATION );
396   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 0, TEST_LOCATION );
397
398   view.LoadUrl( TEST_URL1 );
399   view.GetNaturalSize();
400   Test::EmitGlobalTimerSignal();
401   DALI_TEST_EQUALS( view.CanGoBack(), false, TEST_LOCATION );
402   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 1, TEST_LOCATION );
403   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 1, TEST_LOCATION );
404   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 1, TEST_LOCATION );
405   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 1, TEST_LOCATION );
406   DALI_TEST_CHECK( signal1 & signal2 & signal3 & signal4 );
407   DALI_TEST_CHECK( !signal5 );
408
409   view.LoadUrl( TEST_URL2 );
410   view.Suspend();
411   view.SetProperty( Actor::Property::SIZE, Vector2( 400, 300 ) );
412   application.SendNotification();
413   application.Render();
414   Test::EmitGlobalTimerSignal();
415   view.Resume();
416   DALI_TEST_EQUALS( view.CanGoBack(), true, TEST_LOCATION );
417   DALI_TEST_EQUALS( view.CanGoForward(), false, TEST_LOCATION );
418   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 2, TEST_LOCATION );
419   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 2, TEST_LOCATION );
420   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 2, TEST_LOCATION );
421   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 2, TEST_LOCATION );
422
423   view.GoBack();
424   Test::EmitGlobalTimerSignal();
425   DALI_TEST_CHECK( !view.CanGoBack() );
426   DALI_TEST_CHECK( view.CanGoForward() );
427
428   view.GoForward();
429   Test::EmitGlobalTimerSignal();
430   DALI_TEST_CHECK( view.CanGoBack() );
431   DALI_TEST_CHECK( !view.CanGoForward() );
432
433   view.Reload();
434   view.StopLoading();
435   view.ClearHistory();
436   Test::EmitGlobalTimerSignal();
437   DALI_TEST_CHECK( !view.CanGoBack() );
438   DALI_TEST_CHECK( !view.CanGoForward() );
439
440   END_TEST;
441 }
442
443 int UtcDaliWebViewPageLoadErrorConsoleMessage(void)
444 {
445   ToolkitTestApplication application;
446
447   WebView view = WebView::New();
448   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
449   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
450   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
451   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
452   application.GetScene().Add( view );
453   application.SendNotification();
454   application.Render();
455   DALI_TEST_CHECK( view );
456
457   ConnectionTracker* testTracker = new ConnectionTracker();
458   view.PageLoadErrorSignal().Connect( &OnPageLoadError );
459   view.ConsoleMessageSignal().Connect( &OnConsoleMessage );
460   bool signal1 = false;
461   bool signal2 = false;
462   view.ConnectSignal( testTracker, "pageLoadError", CallbackFunctor(&signal1) );
463   view.ConnectSignal( testTracker, "consoleMessage", CallbackFunctor(&signal2) );
464   DALI_TEST_EQUALS( gPageLoadErrorCallbackCalled, 0, TEST_LOCATION );
465   DALI_TEST_EQUALS( gConsoleMessageCallbackCalled, 0, TEST_LOCATION );
466
467   view.LoadUrl( TEST_URL1 );
468   Test::EmitGlobalTimerSignal();
469   DALI_TEST_EQUALS( gPageLoadErrorCallbackCalled, 1, TEST_LOCATION );
470   DALI_TEST_EQUALS( gConsoleMessageCallbackCalled, 1, TEST_LOCATION );
471   DALI_TEST_CHECK( signal1 & signal2);
472
473   // error code.
474   DALI_TEST_CHECK(gPageLoadErrorInstance);
475   DALI_TEST_EQUALS(gPageLoadErrorInstance->GetUrl(), TEST_URL1, TEST_LOCATION);
476   DALI_TEST_EQUALS(gPageLoadErrorInstance->GetCode(), Dali::WebEngineLoadError::ErrorCode::UNKNOWN, TEST_LOCATION);
477   std::string testErrorDescription("This is an error.");
478   DALI_TEST_EQUALS(gPageLoadErrorInstance->GetDescription(), testErrorDescription, TEST_LOCATION);
479   DALI_TEST_EQUALS(gPageLoadErrorInstance->GetType(), Dali::WebEngineLoadError::ErrorType::NONE, TEST_LOCATION);
480
481   // console message.
482   DALI_TEST_CHECK(gConsoleMessageInstance);
483   std::string testConsoleSource("source");
484   DALI_TEST_EQUALS(gConsoleMessageInstance->GetSource(), testConsoleSource, TEST_LOCATION);
485   DALI_TEST_EQUALS(gConsoleMessageInstance->GetLine(), 10, TEST_LOCATION);
486   DALI_TEST_EQUALS(gConsoleMessageInstance->GetSeverityLevel(), Dali::WebEngineConsoleMessage::SeverityLevel::EMPTY, TEST_LOCATION);
487   std::string testConsoleText("This is a text.");
488   DALI_TEST_EQUALS(gConsoleMessageInstance->GetText(), testConsoleText, TEST_LOCATION);
489
490   // reset
491   gPageLoadErrorInstance = nullptr;
492   gConsoleMessageInstance = nullptr;
493
494   END_TEST;
495 }
496
497 int UtcDaliWebViewTouchAndKeys(void)
498 {
499   ToolkitTestApplication application;
500
501   WebView view = WebView::New();
502   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
503   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
504   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
505   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
506
507   application.GetScene().Add( view );
508   application.SendNotification();
509   application.Render();
510
511   view.GetNaturalSize();
512   view.TouchedSignal().Connect( &OnTouched );
513
514   // Touch event
515   Dali::Integration::TouchEvent event;
516   Dali::Integration::Point pointDown, pointUp;
517
518   event = Dali::Integration::TouchEvent();
519   pointDown.SetState( PointState::DOWN );
520   pointDown.SetScreenPosition( Vector2( 10, 10 ) );
521   event.AddPoint( pointDown );
522   application.ProcessEvent( event );
523
524   event = Dali::Integration::TouchEvent();
525   pointUp.SetState( PointState::UP );
526   pointUp.SetScreenPosition( Vector2( 10, 10 ) );
527   event.AddPoint( pointUp );
528   application.ProcessEvent( event );
529
530   // Key event
531   Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( view );
532   application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) );
533   application.SendNotification();
534
535   DALI_TEST_CHECK( gTouched );
536   DALI_TEST_CHECK( view );
537
538   END_TEST;
539 }
540
541 int UtcDaliWebViewFocusGainedAndLost(void)
542 {
543   ToolkitTestApplication application;
544
545   WebView view = WebView::New();
546   DALI_TEST_CHECK( view );
547
548   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
549   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
550   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
551   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
552
553   application.GetScene().Add( view );
554   application.SendNotification();
555   application.Render();
556
557   view.SetKeyInputFocus();
558   DALI_TEST_CHECK( view.HasKeyInputFocus() );
559
560   // reset
561   view.ClearKeyInputFocus();
562   DALI_TEST_CHECK( !view.HasKeyInputFocus() );
563
564   END_TEST;
565 }
566
567 int UtcDaliWebViewPropertyPageZoomFactor(void)
568 {
569   ToolkitTestApplication application;
570
571   WebView view = WebView::New();
572   DALI_TEST_CHECK( view );
573
574   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
575   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
576   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
577   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
578
579   application.GetScene().Add( view );
580   application.SendNotification();
581   application.Render();
582
583   view.SetProperty( WebView::Property::PAGE_ZOOM_FACTOR, 1.5f);
584   float zoomFactor = view.GetProperty<float>( WebView::Property::PAGE_ZOOM_FACTOR );
585   DALI_TEST_EQUALS( zoomFactor, 1.5f, TEST_LOCATION );
586
587   view.SetProperty( WebView::Property::PAGE_ZOOM_FACTOR, 1.0f);
588   zoomFactor = view.GetProperty<float>( WebView::Property::PAGE_ZOOM_FACTOR );
589   DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION );
590
591   END_TEST;
592 }
593
594 int UtcDaliWebViewPropertyTextZoomFactor(void)
595 {
596   ToolkitTestApplication application;
597
598   WebView view = WebView::New();
599   DALI_TEST_CHECK( view );
600
601   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
602   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
603   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
604   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
605
606   application.GetScene().Add( view );
607   application.SendNotification();
608   application.Render();
609
610   view.SetProperty( WebView::Property::TEXT_ZOOM_FACTOR, 1.5f);
611   float zoomFactor = view.GetProperty<float>( WebView::Property::TEXT_ZOOM_FACTOR );
612   DALI_TEST_EQUALS( zoomFactor, 1.5f, TEST_LOCATION );
613
614   view.SetProperty( WebView::Property::TEXT_ZOOM_FACTOR, 1.0f);
615   zoomFactor = view.GetProperty<float>( WebView::Property::TEXT_ZOOM_FACTOR );
616   DALI_TEST_EQUALS( zoomFactor, 1.0f, TEST_LOCATION );
617
618   END_TEST;
619 }
620
621 int UtcDaliWebViewPropertyLoadProgressPercentage(void)
622 {
623   ToolkitTestApplication application;
624
625   WebView view = WebView::New();
626   DALI_TEST_CHECK( view );
627
628   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
629   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
630   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
631   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
632
633   application.GetScene().Add( view );
634   application.SendNotification();
635   application.Render();
636
637   float percentage = view.GetProperty<float>( WebView::Property::LOAD_PROGRESS_PERCENTAGE );
638   DALI_TEST_EQUALS( percentage, 0.5f, TEST_LOCATION );
639
640   END_TEST;
641 }
642
643 int UtcDaliWebViewMove(void)
644 {
645   ToolkitTestApplication application;
646
647   WebView view = WebView::New();
648   DALI_TEST_CHECK( view );
649
650   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
651   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
652   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
653   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
654
655   application.GetScene().Add( view );
656   application.SendNotification();
657   application.Render();
658
659   view.SetProperty( Actor::Property::POSITION, Vector2( 100, 100 ));
660   Vector3 viewPos = view.GetProperty<Vector3>( Actor::Property::POSITION );
661   DALI_TEST_EQUALS( viewPos, Vector3( 100, 100, 0 ), TEST_LOCATION );
662
663   END_TEST;
664 }
665
666 int UtcDaliWebViewPropertyVideoHoleEnabled(void)
667 {
668   ToolkitTestApplication application;
669
670   WebView view = WebView::New();
671   DALI_TEST_CHECK( view );
672
673   const bool kDefaultValue = true;
674   const bool kTestValue = false;
675
676   // Check default value
677   bool output;
678   Property::Value value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
679   DALI_TEST_CHECK( value.Get( output ) );
680   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
681
682   // Check Set/GetProperty
683   view.SetProperty( WebView::Property::VIDEO_HOLE_ENABLED, kTestValue );
684   value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
685   DALI_TEST_CHECK( value.Get( output ) );
686   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
687
688   END_TEST;
689 }
690
691 int UtcDaliWebViewPropertyMouseEventsEnabled(void)
692 {
693   ToolkitTestApplication application;
694
695   WebView view = WebView::New();
696   DALI_TEST_CHECK( view );
697
698   const bool kDefaultValue = true;
699   const bool kTestValue = false;
700
701   // Check default value
702   bool output;
703   Property::Value value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
704   DALI_TEST_CHECK( value.Get( output ) );
705   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
706
707   // Check Set/GetProperty
708   view.SetProperty( WebView::Property::MOUSE_EVENTS_ENABLED, kTestValue );
709   value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
710   DALI_TEST_CHECK( value.Get( output ) );
711   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
712
713   END_TEST;
714 }
715
716 int UtcDaliWebViewPropertyKeyEventsEnabled(void)
717 {
718   ToolkitTestApplication application;
719
720   WebView view = WebView::New();
721   DALI_TEST_CHECK( view );
722
723   const bool kDefaultValue = true;
724   const bool kTestValue = false;
725
726   // Check default value
727   bool output;
728   Property::Value value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
729   DALI_TEST_CHECK( value.Get( output ) );
730   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
731
732   // Check Set/GetProperty
733   view.SetProperty( WebView::Property::KEY_EVENTS_ENABLED, kTestValue );
734   value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
735   DALI_TEST_CHECK( value.Get( output ) );
736   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
737
738   END_TEST;
739 }
740
741 int UtcDaliWebViewHoverAndWheel(void)
742 {
743   ToolkitTestApplication application;
744
745   WebView view = WebView::New();
746   DALI_TEST_CHECK( view );
747   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
748   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
749   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
750   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
751
752   application.GetScene().Add( view );
753   application.SendNotification();
754   application.Render();
755
756   view.GetNaturalSize();
757   view.HoveredSignal().Connect( &OnHovered );
758   view.WheelEventSignal().Connect( &OnWheelEvent );
759
760   // Hover event
761   Dali::Integration::HoverEvent event = Dali::Integration::HoverEvent();
762   Dali::Integration::Point pointDown;
763   pointDown.SetState( PointState::DOWN );
764   pointDown.SetScreenPosition( Vector2( 10, 10 ) );
765   event.AddPoint( pointDown );
766   application.ProcessEvent( event );
767
768   event = Dali::Integration::HoverEvent();
769   Dali::Integration::Point pointUp;
770   pointUp.SetState( PointState::UP );
771   pointUp.SetScreenPosition( Vector2( 10, 10 ) );
772   event.AddPoint( pointUp );
773   application.ProcessEvent( event );
774
775   event = Dali::Integration::HoverEvent();
776   Dali::Integration::Point pointMotion;
777   pointUp.SetState( PointState::MOTION );
778   pointUp.SetScreenPosition( Vector2( 10, 10 ) );
779   event.AddPoint( pointMotion );
780   application.ProcessEvent( event );
781
782   // Wheel event
783   Dali::Integration::WheelEvent wheelEvent;
784   wheelEvent.type = Dali::Integration::WheelEvent::Type::MOUSE_WHEEL;
785   wheelEvent.direction = 0;
786   wheelEvent.point = Vector2( 20, 20 );
787   wheelEvent.delta = 10;
788   application.ProcessEvent( wheelEvent );
789   application.SendNotification();
790
791   DALI_TEST_CHECK( gHovered );
792   DALI_TEST_CHECK( gWheelEventHandled );
793
794   END_TEST;
795 }
796
797 int UtcDaliWebViewFormRepostDecisionFrameRendering(void)
798 {
799   ToolkitTestApplication application;
800
801   WebView view = WebView::New();
802   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
803   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
804   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
805   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
806   application.GetScene().Add( view );
807   application.SendNotification();
808   application.Render();
809   DALI_TEST_CHECK( view );
810
811   ConnectionTracker* testTracker = new ConnectionTracker();
812   view.FormRepostDecisionSignal().Connect(&OnFormRepostDecision);
813   view.FrameRenderedSignal().Connect(&OnFrameRendered);
814   bool signal1 = false;
815   bool signal2 = false;
816   view.ConnectSignal( testTracker, "formRepostDecision", CallbackFunctor(&signal1) );
817   view.ConnectSignal( testTracker, "frameRendered", CallbackFunctor(&signal2) );
818   DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 0, TEST_LOCATION );
819   DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 0, TEST_LOCATION );
820
821   view.LoadUrl( TEST_URL1 );
822   Test::EmitGlobalTimerSignal();
823   DALI_TEST_EQUALS( gFormRepostDecisionCallbackCalled, 1, TEST_LOCATION );
824   DALI_TEST_EQUALS( gFrameRenderedCallbackCalled, 1, TEST_LOCATION );
825   DALI_TEST_CHECK( signal1 & signal2);
826
827   // form repost decision.
828   DALI_TEST_CHECK(gFormRepostDecisionInstance);
829   gFormRepostDecisionInstance->Reply(true);
830
831   // reset
832   gFormRepostDecisionInstance = nullptr;
833
834   END_TEST;
835 }
836
837 int UtcDaliWebViewSslCertificateHttpAuthentication(void)
838 {
839   ToolkitTestApplication application;
840
841   WebView view = WebView::New();
842   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
843   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
844   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
845   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
846   application.GetScene().Add( view );
847   application.SendNotification();
848   application.Render();
849   DALI_TEST_CHECK( view );
850
851   ConnectionTracker* testTracker = new ConnectionTracker();
852   view.CertificateConfirmSignal().Connect(&OnCertificateConfirm);
853   view.SslCertificateChangedSignal().Connect(&OnSslCertificateChanged);
854   view.HttpAuthHandlerSignal().Connect(&OnHttpAuthHandler);
855   bool signal1 = false;
856   bool signal2 = false;
857   bool signal3 = false;
858   view.ConnectSignal( testTracker, "certificateConfirm", CallbackFunctor(&signal1) );
859   view.ConnectSignal( testTracker, "sslCertificateChanged", CallbackFunctor(&signal2) );
860   view.ConnectSignal( testTracker, "httpAuthRequest", CallbackFunctor(&signal3) );
861   DALI_TEST_EQUALS( gCertificateConfirmCallbackCalled, 0, TEST_LOCATION );
862   DALI_TEST_EQUALS( gSslCertificateChangedCallbackCalled, 0, TEST_LOCATION );
863   DALI_TEST_EQUALS( gHttpAuthHandlerCallbackCalled, 0, TEST_LOCATION );
864
865   view.LoadUrl( TEST_URL1 );
866   Test::EmitGlobalTimerSignal();
867   DALI_TEST_EQUALS( gCertificateConfirmCallbackCalled, 1, TEST_LOCATION );
868   DALI_TEST_EQUALS( gSslCertificateChangedCallbackCalled, 1, TEST_LOCATION );
869   DALI_TEST_EQUALS( gHttpAuthHandlerCallbackCalled, 1, TEST_LOCATION );
870   DALI_TEST_CHECK( signal1 & signal2 & signal3);
871
872   // certificate.
873   DALI_TEST_CHECK(gCertificateConfirmInstance);
874   gCertificateConfirmInstance->Allow(true);
875   DALI_TEST_CHECK(gCertificateConfirmInstance->IsFromMainFrame());
876
877   DALI_TEST_CHECK(gSslCertificateInstance);
878   DALI_TEST_EQUALS(gSslCertificateInstance->GetPem(), "abc", TEST_LOCATION);
879   DALI_TEST_CHECK(gSslCertificateInstance->IsContextSecure());
880
881   // http authentication.
882   DALI_TEST_CHECK(gHttpAuthInstance);
883   gHttpAuthInstance->Suspend();
884   gHttpAuthInstance->UseCredential("", "");
885   gHttpAuthInstance->CancelCredential();
886   DALI_TEST_EQUALS(gHttpAuthInstance->GetRealm(), "test", TEST_LOCATION);
887
888   // reset
889   gCertificateConfirmInstance = nullptr;
890   gSslCertificateInstance = nullptr;
891   gHttpAuthInstance = nullptr;
892
893   END_TEST;
894 }
895
896 int UtcDaliWebViewGetWebBackForwardList(void)
897 {
898   ToolkitTestApplication application;
899
900   WebView view = WebView::New();
901   DALI_TEST_CHECK( view );
902
903   Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
904   DALI_TEST_CHECK( bfList != 0 );
905
906   END_TEST;
907 }
908
909 int UtcDaliWebViewGetWebContext(void)
910 {
911   ToolkitTestApplication application;
912
913   WebView view = WebView::New();
914   DALI_TEST_CHECK( view );
915
916   Dali::Toolkit::WebContext* context = view.GetContext();
917   DALI_TEST_CHECK( context != 0 );
918
919   END_TEST;
920 }
921
922 int UtcDaliWebViewGetWebCookieManager(void)
923 {
924   ToolkitTestApplication application;
925
926   WebView view = WebView::New();
927   DALI_TEST_CHECK( view );
928
929   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
930   DALI_TEST_CHECK( cookieManager != 0 );
931
932   END_TEST;
933 }
934
935 int UtcDaliWebViewGetWebSettings(void)
936 {
937   ToolkitTestApplication application;
938
939   WebView view = WebView::New();
940   DALI_TEST_CHECK( view );
941
942   Dali::Toolkit::WebSettings* settings = view.GetSettings();
943   DALI_TEST_CHECK( settings != 0 );
944
945   END_TEST;
946 }
947
948 int UtcDaliWebViewProperty1(void)
949 {
950   // URL
951   ToolkitTestApplication application;
952
953   WebView view = WebView::New();
954   DALI_TEST_CHECK( view );
955
956   std::string local;
957   view.SetProperty( WebView::Property::URL, TEST_URL1 );
958   Property::Value val = view.GetProperty( WebView::Property::URL );
959   DALI_TEST_CHECK( val.Get( local ) );
960   DALI_TEST_EQUALS( local, TEST_URL1, TEST_LOCATION );
961
962   END_TEST;
963 }
964
965 int UtcDaliWebViewProperty4(void)
966 {
967   // USER_AGENT
968   ToolkitTestApplication application;
969
970   WebView view = WebView::New();
971   DALI_TEST_CHECK( view );
972
973   const std::string kDefaultValue;
974   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";
975
976   // Check default value
977   std::string output;
978   Property::Value value = view.GetProperty( WebView::Property::USER_AGENT );
979   DALI_TEST_CHECK( value.Get( output ) );
980   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
981
982   // Check Set/GetProperty
983   view.SetProperty( WebView::Property::USER_AGENT, kTestValue );
984   value = view.GetProperty( WebView::Property::USER_AGENT );
985   DALI_TEST_CHECK( value.Get( output ) );
986   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
987
988   END_TEST;
989 }
990
991 int UtcDaliWebViewProperty9(void)
992 {
993   // SCROLL_POSITION
994   ToolkitTestApplication application;
995
996   WebView view = WebView::New();
997   DALI_TEST_CHECK( view );
998
999   // Check default value
1000   Dali::Vector2 output = Dali::Vector2::ONE;
1001   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1002   DALI_TEST_CHECK( output.x == 0 && output.y == 0 );
1003
1004   // Check Set/GetProperty
1005   Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
1006   view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
1007   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1008   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
1009
1010   // Check default value of scroll size
1011   output = Dali::Vector2::ONE;
1012   view.GetProperty( WebView::Property::SCROLL_SIZE ).Get( output );
1013   DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
1014
1015   // Check default value of content size
1016   output = Dali::Vector2::ONE;
1017   view.GetProperty( WebView::Property::CONTENT_SIZE ).Get( output );
1018   DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
1019
1020   END_TEST;
1021 }
1022
1023 int UtcDaliWebViewPropertyBackgroundColorSelectedTextEtc(void)
1024 {
1025   ToolkitTestApplication application;
1026
1027   WebView view = WebView::New();
1028   DALI_TEST_CHECK( view );
1029
1030   Dali::Vector4 testValue = Dali::Vector4(0.0f, 0.0f, 0.0f, 0.0f);
1031   view.SetProperty(WebView::Property::DOCUMENT_BACKGROUND_COLOR, testValue);
1032   view.SetProperty(WebView::Property::TILES_CLEARED_WHEN_HIDDEN, true);
1033   view.SetProperty(WebView::Property::TILE_COVER_AREA_MULTIPLIER, 1.0f);
1034   view.SetProperty(WebView::Property::CURSOR_ENABLED_BY_CLIENT, true);
1035
1036   // Check default value
1037   std::string testText("test");
1038   std::string output;
1039   view.GetProperty(WebView::Property::SELECTED_TEXT).Get(output);
1040   DALI_TEST_EQUALS(output, testText, TEST_LOCATION);
1041
1042   END_TEST;
1043 }
1044
1045 int UtcDaliWebViewPropertyTitleFavicon(void)
1046 {
1047   ToolkitTestApplication application;
1048
1049   char argv[] = "--test";
1050   WebView view = WebView::New( 1, (char**)&argv );
1051   DALI_TEST_CHECK( view );
1052
1053   // reset something
1054   view.ClearAllTilesResources();
1055
1056   // Check default value of title
1057   std::string testValue("title");
1058   std::string output;
1059   view.GetProperty( WebView::Property::TITLE ).Get( output );
1060   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
1061
1062   // Check default value of favicon
1063   Dali::Toolkit::ImageView* favicon = &view.GetFavicon();
1064   DALI_TEST_CHECK( favicon );
1065   Dali::Vector3 iconsize = favicon->GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
1066   DALI_TEST_CHECK( ( int )iconsize.width == 2 && ( int )iconsize.height == 2 );
1067
1068   END_TEST;
1069 }
1070
1071 int UtcDaliWebViewContextMenuCustomizedAndItemSelected(void)
1072 {
1073   ToolkitTestApplication application;
1074
1075   WebView view = WebView::New();
1076   DALI_TEST_CHECK( view );
1077
1078   // load url.
1079   ConnectionTracker* testTracker = new ConnectionTracker();
1080   view.ContextMenuCustomizedSignal().Connect( &OnContextMenuCustomized );
1081   view.ContextMenuItemSelectedSignal().Connect( &OnContextMenuItemSelected );
1082   bool signal1 = false;
1083   bool signal2 = false;
1084   view.ConnectSignal( testTracker, "contextMenuCustomized", CallbackFunctor(&signal1) );
1085   view.ConnectSignal( testTracker, "contextMenuItemSelected", CallbackFunctor(&signal2) );
1086   DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 0, TEST_LOCATION );
1087   DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 0, TEST_LOCATION );
1088   DALI_TEST_CHECK(gContextMenuInstance == 0);
1089   DALI_TEST_CHECK(gContextMenuItemInstance == 0);
1090
1091   view.LoadUrl( TEST_URL1 );
1092   Test::EmitGlobalTimerSignal();
1093   DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 1, TEST_LOCATION );
1094   DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 1, TEST_LOCATION );
1095   DALI_TEST_CHECK( signal1 );
1096   DALI_TEST_CHECK( signal2 );
1097
1098   // check context meun & its items.
1099   DALI_TEST_CHECK(gContextMenuInstance != 0);
1100   std::unique_ptr<Dali::WebEngineContextMenuItem> item = gContextMenuInstance->GetItemAt(0);
1101   DALI_TEST_CHECK(item.get() != 0);
1102   std::vector<std::unique_ptr<Dali::WebEngineContextMenuItem>> itemList = gContextMenuInstance->GetItemList();
1103   DALI_TEST_CHECK(itemList.size() == 1);
1104   Dali::Vector2 testPosition = Dali::Vector2(100, 100);
1105   DALI_TEST_EQUALS(gContextMenuInstance->GetPosition(), testPosition, TEST_LOCATION);
1106   DALI_TEST_CHECK(gContextMenuInstance->RemoveItem(*(item.get())));
1107   DALI_TEST_CHECK(gContextMenuInstance->AppendItemAsAction(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", false));
1108   DALI_TEST_CHECK(gContextMenuInstance->AppendItem(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", "", false));
1109   DALI_TEST_CHECK(gContextMenuInstance->SelectItem(*(item.get())));
1110   DALI_TEST_CHECK(gContextMenuInstance->Hide());
1111
1112   DALI_TEST_CHECK(gContextMenuItemInstance != 0);
1113   Dali::WebEngineContextMenuItem::ItemTag testItemTag = Dali::WebEngineContextMenuItem::ItemTag::NO_ACTION;
1114   DALI_TEST_EQUALS(gContextMenuItemInstance->GetTag(), testItemTag, TEST_LOCATION);
1115   Dali::WebEngineContextMenuItem::ItemType testItemType = Dali::WebEngineContextMenuItem::ItemType::ACTION;
1116   DALI_TEST_EQUALS(gContextMenuItemInstance->GetType(), testItemType, TEST_LOCATION);
1117   DALI_TEST_CHECK(gContextMenuItemInstance->IsEnabled());
1118   std::string testLinkUrl("http://test.html");
1119   DALI_TEST_EQUALS(gContextMenuItemInstance->GetLinkUrl(), testLinkUrl, TEST_LOCATION);
1120   std::string testImageUrl("http://test.jpg");
1121   DALI_TEST_EQUALS(gContextMenuItemInstance->GetImageUrl(), testImageUrl, TEST_LOCATION);
1122   std::string testTitle("title");
1123   DALI_TEST_EQUALS(gContextMenuItemInstance->GetTitle(), testTitle, TEST_LOCATION);
1124   DALI_TEST_CHECK(gContextMenuItemInstance->GetParentMenu().get() == 0);
1125
1126   gContextMenuInstance = nullptr;
1127   gContextMenuItemInstance = nullptr;
1128
1129   END_TEST;
1130 }
1131
1132 int UtcDaliWebViewScrollBy(void)
1133 {
1134   ToolkitTestApplication application;
1135
1136   WebView view = WebView::New();
1137   DALI_TEST_CHECK( view );
1138
1139   // load url.
1140   ConnectionTracker* testTracker = new ConnectionTracker();
1141   view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
1142   bool signal1 = false;
1143   view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
1144   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
1145
1146   view.LoadUrl( TEST_URL1 );
1147   Test::EmitGlobalTimerSignal();
1148
1149   // set scroll position.
1150   Dali::Vector2 output = Dali::Vector2::ONE;
1151   Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
1152   view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
1153   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1154   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
1155
1156   // scroll by and trigger scrollEdgeReached event.
1157   view.ScrollBy( 50, 50 );
1158   Test::EmitGlobalTimerSignal();
1159
1160   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1161   DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
1162   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
1163   DALI_TEST_CHECK( signal1 );
1164
1165   // scroll by and trigger scrollEdgeReached event.
1166   bool result = view.ScrollEdgeBy( 50, 50 );
1167   DALI_TEST_CHECK( result );
1168   Test::EmitGlobalTimerSignal();
1169
1170   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1171   DALI_TEST_CHECK( output.x == 200 && output.y == 200 );
1172   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 2, TEST_LOCATION );
1173   DALI_TEST_CHECK( signal1 );
1174
1175   END_TEST;
1176 }
1177
1178 int UtcDaliWebViewSetGetScaleFactorActivateAccessibility(void)
1179 {
1180   ToolkitTestApplication application;
1181
1182   WebView view = WebView::New();
1183   DALI_TEST_CHECK( view );
1184
1185   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1186   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1187   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1188   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1189
1190   application.GetScene().Add( view );
1191   application.SendNotification();
1192   application.Render();
1193
1194   view.ActivateAccessibility(true);
1195   view.AddDynamicCertificatePath("host", "test/to/path");
1196   bool found = view.HighlightText("test", Dali::WebEnginePlugin::FindOption::CASE_INSENSITIVE, 2);
1197   DALI_TEST_CHECK( found );
1198
1199   view.SetScaleFactor(1.5f, Dali::Vector2(0.0f, 0.0f));
1200   float result = view.GetScaleFactor();
1201   DALI_TEST_EQUALS( result, 1.5f, TEST_LOCATION );
1202
1203   view.SetScaleFactor(1.0f, Dali::Vector2(0.0f, 0.0f));
1204   result = view.GetScaleFactor();
1205   DALI_TEST_EQUALS( result, 1.0f, TEST_LOCATION );
1206
1207   END_TEST;
1208 }
1209
1210 int UtcDaliWebViewGetScreenshotSyncAndAsync(void)
1211 {
1212   // SCROLL_POSITION
1213   ToolkitTestApplication application;
1214
1215   char argv[] = "--test";
1216   WebView view = WebView::New( 1, (char**)&argv );
1217   DALI_TEST_CHECK( view );
1218
1219   // Check GetScreenshot
1220   Dali::Rect<int> viewArea;
1221   viewArea.x = 100;
1222   viewArea.y = 100;
1223   viewArea.width = 10;
1224   viewArea.height = 10;
1225   Dali::Toolkit::ImageView screenshot = view.GetScreenshot(viewArea, 1.0f);
1226   DALI_TEST_CHECK( screenshot );
1227   Dali::Vector3 shotsize = screenshot.GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
1228   DALI_TEST_CHECK( ( int )shotsize.width == viewArea.width && ( int )shotsize.height == viewArea.height );
1229
1230   // Check GetScreenshotAsynchronously
1231   viewArea.x = 100;
1232   viewArea.y = 100;
1233   viewArea.width = 100;
1234   viewArea.height = 100;
1235   bool result = view.GetScreenshotAsynchronously(viewArea, 1.0f, &OnScreenshotCaptured);
1236   DALI_TEST_CHECK( result );
1237
1238   Test::EmitGlobalTimerSignal();
1239
1240   Test::EmitGlobalTimerSignal();
1241   DALI_TEST_EQUALS( gScreenshotCapturedCallbackCalled, 1, TEST_LOCATION );
1242
1243   END_TEST;
1244 }
1245
1246 int UtcDaliWebViewVideoPlayingGeolocationPermission(void)
1247 {
1248   // SCROLL_POSITION
1249   ToolkitTestApplication application;
1250
1251   char argv[] = "--test";
1252   WebView view = WebView::New( 1, (char**)&argv );
1253   DALI_TEST_CHECK( view );
1254
1255   // Check CheckVideoPlayingAsynchronously
1256   bool result = view.CheckVideoPlayingAsynchronously(&OnVideoPlaying);
1257   DALI_TEST_CHECK( result );
1258   Test::EmitGlobalTimerSignal();
1259   DALI_TEST_EQUALS( gVideoPlayingCallbackCalled, 1, TEST_LOCATION );
1260
1261   // Check RegisterGeolocationPermissionCallback
1262   view.RegisterGeolocationPermissionCallback(&OnGeolocationPermission);
1263   Test::EmitGlobalTimerSignal();
1264   DALI_TEST_EQUALS( gGeolocationPermissionCallbackCalled, 1, TEST_LOCATION );
1265
1266   END_TEST;
1267 }
1268
1269 int UtcDaliWebViewHttpRequestInterceptor(void)
1270 {
1271   ToolkitTestApplication application;
1272
1273   WebView view = WebView::New();
1274   DALI_TEST_CHECK( view );
1275
1276   // load url.
1277   ConnectionTracker* testTracker = new ConnectionTracker();
1278   view.RequestInterceptorSignal().Connect( &OnRequestInterceptor );
1279   bool signal1 = false;
1280   view.ConnectSignal( testTracker, "requestInterceptor", CallbackFunctor(&signal1) );
1281   DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 0, TEST_LOCATION );
1282   DALI_TEST_CHECK(gRequestInterceptorInstance == 0);
1283
1284   view.LoadUrl( TEST_URL1 );
1285   Test::EmitGlobalTimerSignal();
1286   DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 1, TEST_LOCATION );
1287   DALI_TEST_CHECK( signal1 );
1288
1289   // check request interceptor.
1290   DALI_TEST_CHECK(gRequestInterceptorInstance != 0);
1291   DALI_TEST_CHECK(gRequestInterceptorInstance->Ignore());
1292   DALI_TEST_CHECK(gRequestInterceptorInstance->SetResponseStatus(400, "error"));
1293   DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseHeader("key", "value"));
1294   DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseBody("test", 4));
1295   std::string testUrl("http://test.html");
1296   DALI_TEST_EQUALS(gRequestInterceptorInstance->GetUrl(), testUrl, TEST_LOCATION);
1297
1298   gRequestInterceptorInstance = nullptr;
1299
1300   END_TEST;
1301 }
1302
1303 int UtcDaliWebViewPolicyDecisionRequest(void)
1304 {
1305   ToolkitTestApplication application;
1306
1307   WebView view = WebView::New();
1308   DALI_TEST_CHECK( view );
1309
1310   // load url.
1311   ConnectionTracker* testTracker = new ConnectionTracker();
1312   view.PolicyDecisionSignal().Connect( &OnPolicyDecisionRequest );
1313   bool signal1 = false;
1314   view.ConnectSignal( testTracker, "policyDecision", CallbackFunctor(&signal1) );
1315   DALI_TEST_EQUALS( gPolicyDecisionCallbackCalled, 0, TEST_LOCATION );
1316   DALI_TEST_CHECK(gPolicyDecisionInstance == 0);
1317
1318   view.LoadUrl( TEST_URL1 );
1319   Test::EmitGlobalTimerSignal();
1320   DALI_TEST_EQUALS( gPolicyDecisionCallbackCalled, 1, TEST_LOCATION );
1321   DALI_TEST_CHECK( signal1 );
1322
1323   // check policy decision & its frame.
1324   DALI_TEST_CHECK(gPolicyDecisionInstance != 0);
1325   std::string testUrl("http://test.html");
1326   DALI_TEST_EQUALS(gPolicyDecisionInstance->GetUrl(), testUrl, TEST_LOCATION);
1327   std::string testCookie("test:abc");
1328   DALI_TEST_EQUALS(gPolicyDecisionInstance->GetCookie(), testCookie, TEST_LOCATION);
1329   Dali::WebEnginePolicyDecision::DecisionType testDecisionType = Dali::WebEnginePolicyDecision::DecisionType::USE;
1330   DALI_TEST_EQUALS(gPolicyDecisionInstance->GetDecisionType(), testDecisionType, TEST_LOCATION);
1331   std::string testResponseMime("txt/xml");
1332   DALI_TEST_EQUALS(gPolicyDecisionInstance->GetResponseMime(), testResponseMime, TEST_LOCATION);
1333   int32_t ResponseStatusCode = 500;
1334   DALI_TEST_EQUALS(gPolicyDecisionInstance->GetResponseStatusCode(), ResponseStatusCode, TEST_LOCATION);
1335   Dali::WebEnginePolicyDecision::NavigationType testNavigationType = Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
1336   DALI_TEST_EQUALS(gPolicyDecisionInstance->GetNavigationType(), testNavigationType, TEST_LOCATION);
1337   std::string testScheme("test");
1338   DALI_TEST_EQUALS(gPolicyDecisionInstance->GetScheme(), testScheme, TEST_LOCATION);
1339   DALI_TEST_CHECK(gPolicyDecisionInstance->Use());
1340   DALI_TEST_CHECK(gPolicyDecisionInstance->Ignore());
1341   DALI_TEST_CHECK(gPolicyDecisionInstance->Suspend());
1342
1343   Dali::WebEngineFrame* webFrame = &(gPolicyDecisionInstance->GetFrame());
1344   DALI_TEST_CHECK(webFrame);
1345   DALI_TEST_CHECK(webFrame->IsMainFrame());
1346
1347   gPolicyDecisionInstance = nullptr;
1348
1349   END_TEST;
1350 }
1351
1352 int UtcDaliWebViewHitTest(void)
1353 {
1354   ToolkitTestApplication application;
1355
1356   WebView view = WebView::New();
1357   DALI_TEST_CHECK( view );
1358
1359   // load url.
1360   view.LoadUrl( TEST_URL1 );
1361
1362   // sync hit test.
1363   std::unique_ptr<Dali::WebEngineHitTest> hitTest = view.CreateHitTest(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT);
1364   DALI_TEST_CHECK(hitTest != 0);
1365   DALI_TEST_EQUALS(hitTest->GetResultContext(), Dali::WebEngineHitTest::ResultContext::DOCUMENT, TEST_LOCATION);
1366   std::string testLinkUri("http://test.html");
1367   DALI_TEST_EQUALS(hitTest->GetLinkUri(), testLinkUri, TEST_LOCATION);
1368   std::string testLinkTitle("test");
1369   DALI_TEST_EQUALS(hitTest->GetLinkTitle(), testLinkTitle, TEST_LOCATION);
1370   std::string testLinkLabel("label");
1371   DALI_TEST_EQUALS(hitTest->GetLinkLabel(), testLinkLabel, TEST_LOCATION);
1372   std::string testImageUri("http://test.jpg");
1373   DALI_TEST_EQUALS(hitTest->GetImageUri(), testImageUri, TEST_LOCATION);
1374   std::string testMediaUri("http://test.mp4");
1375   DALI_TEST_EQUALS(hitTest->GetMediaUri(), testMediaUri, TEST_LOCATION);
1376   std::string testTagName("img");
1377   DALI_TEST_EQUALS(hitTest->GetTagName(), testTagName, TEST_LOCATION);
1378   std::string testNodeValue("test");
1379   DALI_TEST_EQUALS(hitTest->GetNodeValue(), testNodeValue, TEST_LOCATION);
1380   Dali::Property::Map* testMap = &hitTest->GetAttributes();
1381   DALI_TEST_CHECK(testMap);
1382   std::string testImageFileNameExtension("jpg");
1383   DALI_TEST_EQUALS(hitTest->GetImageFileNameExtension(), testImageFileNameExtension, TEST_LOCATION);
1384   Dali::PixelData testImageBuffer = hitTest->GetImageBuffer();
1385   DALI_TEST_CHECK((int)testImageBuffer.GetWidth() == 2 && (int)testImageBuffer.GetHeight() == 2);
1386
1387   // async...
1388   bool result = view.CreateHitTestAsynchronously(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT, &OnHitTestCreated);
1389   DALI_TEST_CHECK(result);
1390   Test::EmitGlobalTimerSignal();
1391   DALI_TEST_EQUALS( gHitTestCreatedCallbackCalled, 1, TEST_LOCATION );
1392
1393   END_TEST;
1394 }
1395
1396 int UtcDaliWebViewEvaluteJavaScript(void)
1397 {
1398   ToolkitTestApplication application;
1399
1400   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1401
1402   view.LoadHtmlString( "<body>Hello World!</body>" );
1403   view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
1404   view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript );
1405   Test::EmitGlobalTimerSignal();
1406
1407   DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION );
1408
1409   END_TEST;
1410 }
1411
1412 int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void)
1413 {
1414   ToolkitTestApplication application;
1415
1416   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1417
1418   view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert );
1419   view.LoadHtmlString( "<head><script type='text/javascript'>alert('this is an alert popup.');</script></head><body>Hello World!</body>" );
1420   view.JavaScriptAlertReply();
1421   Test::EmitGlobalTimerSignal();
1422   DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION );
1423
1424   view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm );
1425   view.LoadHtmlString( "<head><script type='text/javascript'>confirm('this is a confirm popup.');</script></head><body>Hello World!</body>" );
1426   view.JavaScriptConfirmReply( true );
1427   Test::EmitGlobalTimerSignal();
1428   DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION );
1429
1430   view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt );
1431   view.LoadHtmlString( "<head><script type='text/javascript'>prompt('this is a prompt popup.');</script></head><body>Hello World!</body>" );
1432   view.JavaScriptPromptReply( "it is a prompt." );
1433   Test::EmitGlobalTimerSignal();
1434   DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION );
1435
1436   END_TEST;
1437 }
1438
1439 int UtcDaliWebViewLoadHtmlStringOverrideCurrentEntryAndContents(void)
1440 {
1441   ToolkitTestApplication application;
1442
1443   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1444   DALI_TEST_CHECK( view );
1445
1446   std::string html("<body>Hello World!</body>");
1447   std::string basicUri("http://basicurl");
1448   std::string unreachableUrl("http://unreachableurl");
1449   bool result = view.LoadHtmlStringOverrideCurrentEntry( html, basicUri, unreachableUrl );
1450   DALI_TEST_CHECK( result );
1451
1452   application.SendNotification();
1453   application.Render();
1454   Test::EmitGlobalTimerSignal();
1455
1456   result = view.LoadContents( html, html.length(), "html/text", "utf-8", basicUri );
1457   DALI_TEST_CHECK( result );
1458
1459   END_TEST;
1460 }
1461
1462 int UtcDaliWebViewReloadSuspendResumeNetworkLoadingCustomHeader(void)
1463 {
1464   ToolkitTestApplication application;
1465
1466   WebView view = WebView::New();
1467   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1468   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1469   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1470   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1471
1472   application.GetScene().Add( view );
1473   application.SendNotification();
1474   application.Render();
1475   DALI_TEST_CHECK( view );
1476
1477   view.LoadUrl( "http://test.html" );
1478   bool result = view.AddCustomHeader("key", "value");
1479   DALI_TEST_CHECK( result );
1480
1481   result = view.ReloadWithoutCache();
1482   DALI_TEST_CHECK( result );
1483
1484   uint32_t portNumber = view.StartInspectorServer(5000);
1485   DALI_TEST_EQUALS( portNumber, 5000, TEST_LOCATION );
1486
1487   application.SendNotification();
1488   application.Render();
1489   Test::EmitGlobalTimerSignal();
1490
1491   result = view.StopInspectorServer();
1492   DALI_TEST_CHECK( result );
1493
1494   view.SuspendNetworkLoading();
1495
1496   result = view.RemoveCustomHeader("key");
1497   DALI_TEST_CHECK( result );
1498
1499   view.ResumeNetworkLoading();
1500
1501   END_TEST;
1502 }
1503
1504 int UtcDaliWebViewMethodsForCoverage(void)
1505 {
1506   ToolkitTestApplication application;
1507
1508   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1509
1510   view.LoadHtmlString( "<body>Hello World!</body>" );
1511   view.AddJavaScriptMessageHandler( "jsObject",
1512     []( const std::string& arg ) {
1513     }
1514   );
1515
1516   DALI_TEST_CHECK( view );
1517
1518   END_TEST;
1519 }
1520
1521 // test cases for web backforward list.
1522
1523 int UtcDaliWebBackForwardListCheckItem(void)
1524 {
1525   ToolkitTestApplication application;
1526
1527   WebView view = WebView::New();
1528   DALI_TEST_CHECK( view );
1529
1530   Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
1531   DALI_TEST_CHECK( bfList != 0 )
1532
1533   unsigned int itemCount = bfList->GetItemCount();
1534   DALI_TEST_CHECK( itemCount == 1 )
1535
1536   std::unique_ptr<Dali::WebEngineBackForwardListItem> citem = bfList->GetCurrentItem();
1537   DALI_TEST_CHECK( citem != 0 );
1538
1539   std::unique_ptr<Dali::WebEngineBackForwardListItem> citemP = bfList->GetPreviousItem();
1540   DALI_TEST_CHECK( citemP != 0 );
1541
1542   std::unique_ptr<Dali::WebEngineBackForwardListItem> citemN = bfList->GetNextItem();
1543   DALI_TEST_CHECK( citemN != 0 );
1544
1545   const std::string kDefaultUrl( "http://url" );
1546   std::string testValue = citem->GetUrl();
1547   DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION );
1548
1549   const std::string kDefaultTitle( "title" );
1550   testValue = citem->GetTitle();
1551   DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION );
1552
1553   const std::string kDefaultOriginalUrl( "http://originalurl" );
1554   testValue = citem->GetOriginalUrl();
1555   DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION );
1556
1557   std::unique_ptr<Dali::WebEngineBackForwardListItem> item = bfList->GetItemAtIndex( 0 );
1558   DALI_TEST_CHECK( item != 0 );
1559
1560   std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vecBack = bfList->GetBackwardItems(-1);
1561   DALI_TEST_CHECK( vecBack.size() == 1 );
1562
1563   std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vecForward = bfList->GetForwardItems(-1);
1564   DALI_TEST_CHECK( vecForward.size() == 1 );
1565
1566   END_TEST;
1567 }
1568
1569 // test cases for web context.
1570
1571 int UtcDaliWebContextGetSetCacheModel(void)
1572 {
1573   ToolkitTestApplication application;
1574
1575   WebView view = WebView::New();
1576   DALI_TEST_CHECK( view );
1577
1578   Dali::Toolkit::WebContext* context = view.GetContext();
1579   DALI_TEST_CHECK( context != 0 )
1580
1581   std::string kDefaultValue;
1582
1583   // Reset something
1584   context->SetProxyUri( kDefaultValue );
1585   context->SetCertificateFilePath( kDefaultValue );
1586   context->DisableCache( false );
1587   context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
1588   context->DeleteAllWebDatabase();
1589   context->DeleteAllWebStorage();
1590   context->DeleteLocalFileSystem();
1591   context->ClearCache();
1592
1593   // Check default value
1594   Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
1595   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
1596
1597   // Check Set/GetProperty
1598   context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1599   value = context->GetCacheModel();
1600   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1601
1602   END_TEST;
1603 }
1604
1605 int UtcDaliWebContextGetWebDatabaseStorageOrigins(void)
1606 {
1607   ToolkitTestApplication application;
1608
1609   WebView view = WebView::New();
1610   DALI_TEST_CHECK( view );
1611
1612   Dali::Toolkit::WebContext* context = view.GetContext();
1613   DALI_TEST_CHECK( context != 0 )
1614
1615   std::string kDefaultValue;
1616
1617   // get origins of web database
1618   bool result = context->GetWebDatabaseOrigins(&OnSecurityOriginsAcquired);
1619   DALI_TEST_CHECK( result );
1620
1621   Test::EmitGlobalTimerSignal();
1622   DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 1, TEST_LOCATION );
1623   DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1624
1625   Dali::WebEngineSecurityOrigin* origin = gSecurityOriginList[0].get();
1626   DALI_TEST_CHECK( origin );
1627
1628   result = context->DeleteWebDatabase(*origin);
1629   DALI_TEST_CHECK( result );
1630
1631   // get origins of web storage
1632   result = context->GetWebStorageOrigins(&OnSecurityOriginsAcquired);
1633   DALI_TEST_CHECK( result );
1634
1635   Test::EmitGlobalTimerSignal();
1636   DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 2, TEST_LOCATION );
1637   DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1638
1639   origin = gSecurityOriginList[0].get();
1640   DALI_TEST_CHECK( origin );
1641
1642   result = context->GetWebStorageUsageForOrigin(*origin, &OnStorageUsageAcquired);
1643   DALI_TEST_CHECK( result );
1644   Test::EmitGlobalTimerSignal();
1645   DALI_TEST_EQUALS( gStorageUsageAcquiredCallbackCalled, 1, TEST_LOCATION );
1646
1647   result = context->DeleteWebStorageOrigin(*origin);
1648   DALI_TEST_CHECK( result );
1649
1650   result = context->DeleteApplicationCache(*origin);
1651   DALI_TEST_CHECK( result );
1652
1653   // form passwords, download state, mime type.
1654   context->GetFormPasswordList(&OnFormPasswordsAcquired);
1655   Test::EmitGlobalTimerSignal();
1656   DALI_TEST_EQUALS(gFormPasswordsAcquiredCallbackCalled, 1, TEST_LOCATION);
1657   DALI_TEST_CHECK(gPasswordDataList.size() == 1);
1658   DALI_TEST_EQUALS(gPasswordDataList[0]->url, "http://test.html", TEST_LOCATION);
1659   DALI_TEST_CHECK(gPasswordDataList[0]->useFingerprint == false);
1660
1661   context->RegisterDownloadStartedCallback(&OnDownloadStarted);
1662   Test::EmitGlobalTimerSignal();
1663   DALI_TEST_EQUALS(gDownloadStartedCallbackCalled, 1, TEST_LOCATION);
1664
1665   context->RegisterMimeOverriddenCallback(&OnMimeOverridden);
1666   Test::EmitGlobalTimerSignal();
1667   DALI_TEST_EQUALS(gMimeOverriddenCallbackCalled, 1, TEST_LOCATION);
1668
1669   gSecurityOriginList.clear();
1670   gPasswordDataList.clear();
1671
1672   END_TEST;
1673 }
1674
1675 // test cases for web cookie manager.
1676
1677 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
1678 {
1679   ToolkitTestApplication application;
1680
1681   WebView view = WebView::New();
1682   DALI_TEST_CHECK( view );
1683
1684   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1685   DALI_TEST_CHECK( cookieManager != 0 )
1686
1687   const std::string kDefaultValue;
1688
1689   // Reset something
1690   cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
1691   cookieManager->ClearCookies();
1692
1693   // Check default value
1694   Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
1695   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
1696
1697   // Check Set/GetProperty
1698   cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1699   value = cookieManager->GetCookieAcceptPolicy();
1700   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1701
1702   END_TEST;
1703 }
1704
1705 int UtcDaliWebCookieManagerChangesWatch(void)
1706 {
1707   ToolkitTestApplication application;
1708
1709   WebView view = WebView::New();
1710   DALI_TEST_CHECK( view );
1711
1712   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1713   DALI_TEST_CHECK( cookieManager != 0 )
1714
1715   cookieManager->ChangesWatch(&OnChangesWatch);
1716   Test::EmitGlobalTimerSignal();
1717   DALI_TEST_EQUALS( gCookieManagerChangsWatchCallbackCalled, 1, TEST_LOCATION );
1718
1719   END_TEST;
1720 }
1721
1722 // test cases for web settings.
1723
1724 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
1725 {
1726   ToolkitTestApplication application;
1727
1728   WebView view = WebView::New();
1729   DALI_TEST_CHECK( view );
1730
1731   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1732   DALI_TEST_CHECK( settings != 0 )
1733
1734   // Reset something
1735   settings->AllowMixedContents( false );
1736   settings->EnableSpatialNavigation( false );
1737   settings->EnableWebSecurity( false );
1738   settings->EnableCacheBuilder( false );
1739   settings->EnableDoNotTrack( false );
1740   settings->UseScrollbarThumbFocusNotifications( false );
1741   settings->AllowFileAccessFromExternalUrl( false );
1742   settings->AllowScriptsOpenWindows( false );
1743
1744   // Check default value
1745   int value = settings->GetDefaultFontSize();
1746   DALI_TEST_CHECK( value == 16 );
1747
1748   // Check Set/GetProperty
1749   settings->SetDefaultFontSize( 20 );
1750   value = settings->GetDefaultFontSize();
1751   DALI_TEST_CHECK( value == 20 );
1752
1753   END_TEST;
1754 }
1755
1756 int UtcDaliWebSettingsCheckEnableJavaScript(void)
1757 {
1758   ToolkitTestApplication application;
1759
1760   WebView view = WebView::New();
1761   DALI_TEST_CHECK( view );
1762
1763   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1764   DALI_TEST_CHECK( settings != 0 )
1765
1766   // Reset something
1767   settings->AllowMixedContents( false );
1768   settings->EnableSpatialNavigation( false );
1769   settings->EnableWebSecurity( false );
1770   settings->EnableCacheBuilder( false );
1771   settings->EnableDoNotTrack( false );
1772   settings->UseScrollbarThumbFocusNotifications( false );
1773   settings->AllowFileAccessFromExternalUrl( false );
1774   settings->AllowScriptsOpenWindows( false );
1775
1776   // Check default value is true or not
1777   bool value = settings->IsJavaScriptEnabled();
1778   DALI_TEST_CHECK( value );
1779
1780   // Check Set/GetProperty
1781   settings->EnableJavaScript( false );
1782   value = settings->IsJavaScriptEnabled();
1783   DALI_TEST_CHECK( !value );
1784
1785   END_TEST;
1786 }
1787
1788 int UtcDaliWebSettingsCheckEnableAutoFitting(void)
1789 {
1790   ToolkitTestApplication application;
1791
1792   WebView view = WebView::New();
1793   DALI_TEST_CHECK( view );
1794
1795   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1796   DALI_TEST_CHECK( settings != 0 )
1797
1798   // Reset something
1799   settings->AllowMixedContents( false );
1800   settings->EnableSpatialNavigation( false );
1801   settings->EnableWebSecurity( false );
1802   settings->EnableCacheBuilder( false );
1803   settings->EnableDoNotTrack( false );
1804   settings->UseScrollbarThumbFocusNotifications( false );
1805   settings->AllowFileAccessFromExternalUrl( false );
1806   settings->AllowScriptsOpenWindows( false );
1807
1808   // Check default value is true or not
1809   bool value = settings->IsAutoFittingEnabled();
1810   DALI_TEST_CHECK( value );
1811
1812   // Check Set/GetProperty
1813   settings->EnableAutoFitting( false );
1814   value = settings->IsAutoFittingEnabled();
1815   DALI_TEST_CHECK( !value );
1816
1817   END_TEST;
1818 }
1819
1820 int UtcDaliWebSettingsCheckEnablePlugins(void)
1821 {
1822   ToolkitTestApplication application;
1823
1824   WebView view = WebView::New();
1825   DALI_TEST_CHECK( view );
1826
1827   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1828   DALI_TEST_CHECK( settings != 0 )
1829
1830   // Reset something
1831   settings->AllowMixedContents( false );
1832   settings->EnableSpatialNavigation( false );
1833   settings->EnableWebSecurity( false );
1834   settings->EnableCacheBuilder( false );
1835   settings->EnableDoNotTrack( false );
1836   settings->UseScrollbarThumbFocusNotifications( false );
1837   settings->AllowFileAccessFromExternalUrl( false );
1838   settings->AllowScriptsOpenWindows( false );
1839
1840   // Check default value is true or not
1841   bool value = settings->ArePluginsEnabled();
1842   DALI_TEST_CHECK( value );
1843
1844   // Check Set/GetProperty
1845   settings->EnablePlugins( false );
1846   value = settings->ArePluginsEnabled();
1847   DALI_TEST_CHECK( !value );
1848
1849   END_TEST;
1850 }
1851
1852 int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void)
1853 {
1854   ToolkitTestApplication application;
1855
1856   WebView view = WebView::New();
1857   DALI_TEST_CHECK( view );
1858
1859   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1860   DALI_TEST_CHECK( settings != 0 )
1861
1862   // Reset something
1863   settings->AllowMixedContents( false );
1864   settings->EnableSpatialNavigation( false );
1865   settings->EnableWebSecurity( false );
1866   settings->EnableCacheBuilder( false );
1867   settings->EnableDoNotTrack( false );
1868   settings->UseScrollbarThumbFocusNotifications( false );
1869   settings->AllowFileAccessFromExternalUrl( false );
1870   settings->AllowScriptsOpenWindows( false );
1871
1872   // Check default value is true or not
1873   bool value = settings->IsPrivateBrowsingEnabled();
1874   DALI_TEST_CHECK( value );
1875
1876   // Check Set/GetProperty
1877   settings->EnablePrivateBrowsing( false );
1878   value = settings->IsPrivateBrowsingEnabled();
1879   DALI_TEST_CHECK( !value );
1880
1881   END_TEST;
1882 }
1883
1884 int UtcDaliWebSettingsCheckEnableLinkMagnifier(void)
1885 {
1886   ToolkitTestApplication application;
1887
1888   WebView view = WebView::New();
1889   DALI_TEST_CHECK( view );
1890
1891   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1892   DALI_TEST_CHECK( settings != 0 )
1893
1894   // Reset something
1895   settings->AllowMixedContents( false );
1896   settings->EnableSpatialNavigation( false );
1897   settings->EnableWebSecurity( false );
1898   settings->EnableCacheBuilder( false );
1899   settings->EnableDoNotTrack( false );
1900   settings->UseScrollbarThumbFocusNotifications( false );
1901   settings->AllowFileAccessFromExternalUrl( false );
1902   settings->AllowScriptsOpenWindows( false );
1903
1904   // Check default value is true or not
1905   bool value = settings->IsLinkMagnifierEnabled();
1906   DALI_TEST_CHECK( value );
1907
1908   // Check Set/GetProperty
1909   settings->EnableLinkMagnifier( false );
1910   value = settings->IsLinkMagnifierEnabled();
1911   DALI_TEST_CHECK( !value );
1912
1913   END_TEST;
1914 }
1915
1916 int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void)
1917 {
1918   ToolkitTestApplication application;
1919
1920   WebView view = WebView::New();
1921   DALI_TEST_CHECK( view );
1922
1923   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1924   DALI_TEST_CHECK( settings != 0 )
1925
1926   // Reset something
1927   settings->AllowMixedContents( false );
1928   settings->EnableSpatialNavigation( false );
1929   settings->EnableWebSecurity( false );
1930   settings->EnableCacheBuilder( false );
1931   settings->EnableDoNotTrack( false );
1932   settings->UseScrollbarThumbFocusNotifications( false );
1933   settings->AllowFileAccessFromExternalUrl( false );
1934   settings->AllowScriptsOpenWindows( false );
1935
1936   // Check default value is true or not
1937   bool value = settings->IsKeypadWithoutUserActionUsed();
1938   DALI_TEST_CHECK( value );
1939
1940   // Check Set/GetProperty
1941   settings->UseKeypadWithoutUserAction( false );
1942   value = settings->IsKeypadWithoutUserActionUsed();
1943   DALI_TEST_CHECK( !value );
1944
1945   END_TEST;
1946 }
1947
1948 int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void)
1949 {
1950   ToolkitTestApplication application;
1951
1952   WebView view = WebView::New();
1953   DALI_TEST_CHECK( view );
1954
1955   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1956   DALI_TEST_CHECK( settings != 0 )
1957
1958   // Reset something
1959   settings->AllowMixedContents( false );
1960   settings->EnableSpatialNavigation( false );
1961   settings->EnableWebSecurity( false );
1962   settings->EnableCacheBuilder( false );
1963   settings->EnableDoNotTrack( false );
1964   settings->UseScrollbarThumbFocusNotifications( false );
1965   settings->AllowFileAccessFromExternalUrl( false );
1966   settings->AllowScriptsOpenWindows( false );
1967
1968   // Check default value is true or not
1969   bool value = settings->IsAutofillPasswordFormEnabled();
1970   DALI_TEST_CHECK( value );
1971   settings->EnableAutofillPasswordForm( false );
1972   value = settings->IsAutofillPasswordFormEnabled();
1973   DALI_TEST_CHECK( !value );
1974   END_TEST;
1975 }
1976
1977 int UtcDaliWebSettingsCheckEnableFormCandidateData(void)
1978 {
1979   ToolkitTestApplication application;
1980
1981   WebView view = WebView::New();
1982   DALI_TEST_CHECK( view );
1983
1984   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1985   DALI_TEST_CHECK( settings != 0 );
1986
1987   // Reset something
1988   settings->AllowMixedContents( false );
1989   settings->EnableSpatialNavigation( false );
1990   settings->EnableWebSecurity( false );
1991   settings->EnableCacheBuilder( false );
1992   settings->EnableDoNotTrack( false );
1993   settings->UseScrollbarThumbFocusNotifications( false );
1994   settings->AllowFileAccessFromExternalUrl( false );
1995   settings->AllowScriptsOpenWindows( false );
1996
1997   // Check default value is true or not
1998   bool value = settings->IsFormCandidateDataEnabled();
1999   DALI_TEST_CHECK( value );
2000
2001   // Check Set/GetProperty
2002   settings->EnableFormCandidateData( false );
2003   value = settings->IsFormCandidateDataEnabled();
2004   DALI_TEST_CHECK( !value );
2005
2006   END_TEST;
2007 }
2008
2009 int UtcDaliWebSettingsCheckEnableTextSelection(void)
2010 {
2011   ToolkitTestApplication application;
2012
2013   WebView view = WebView::New();
2014   DALI_TEST_CHECK( view );
2015
2016   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2017   DALI_TEST_CHECK( settings != 0 );
2018
2019   // Reset something
2020   settings->AllowMixedContents( false );
2021   settings->EnableSpatialNavigation( false );
2022   settings->EnableWebSecurity( false );
2023   settings->EnableCacheBuilder( false );
2024   settings->EnableDoNotTrack( false );
2025   settings->UseScrollbarThumbFocusNotifications( false );
2026   settings->AllowFileAccessFromExternalUrl( false );
2027   settings->AllowScriptsOpenWindows( false );
2028
2029   // Check default value is true or not
2030   bool value = settings->IsTextSelectionEnabled();
2031   DALI_TEST_CHECK( value );
2032
2033   //Check Set/GetProperty
2034   settings->EnableTextSelection(false);
2035   value = settings->IsTextSelectionEnabled();
2036   DALI_TEST_CHECK( !value );
2037
2038   END_TEST;
2039 }
2040
2041 int UtcDaliWebSettingsCheckEnableTextAutosizing(void)
2042 {
2043   ToolkitTestApplication application;
2044
2045   WebView view = WebView::New();
2046   DALI_TEST_CHECK( view );
2047
2048   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2049   DALI_TEST_CHECK( settings != 0 );
2050
2051   // Reset something
2052   settings->AllowMixedContents( false );
2053   settings->EnableSpatialNavigation( false );
2054   settings->EnableWebSecurity( false );
2055   settings->EnableCacheBuilder( false );
2056   settings->EnableDoNotTrack( false );
2057   settings->UseScrollbarThumbFocusNotifications( false );
2058   settings->AllowFileAccessFromExternalUrl( false );
2059   settings->AllowScriptsOpenWindows( false );
2060
2061   // Check default value is true or not
2062   bool value = settings->IsTextAutosizingEnabled();
2063   DALI_TEST_CHECK( value );
2064
2065   // Check Set/GetProperty
2066   settings->EnableTextAutosizing(false);
2067   value = settings->IsTextAutosizingEnabled();
2068   DALI_TEST_CHECK( !value );
2069
2070   END_TEST;
2071 }
2072
2073 int UtcDaliWebSettingsCheckEnableArrowScroll(void)
2074 {
2075   ToolkitTestApplication application;
2076
2077   WebView view = WebView::New();
2078   DALI_TEST_CHECK( view );
2079
2080   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2081   DALI_TEST_CHECK( settings != 0 );
2082
2083   // Reset something
2084   settings->AllowMixedContents( false );
2085   settings->EnableSpatialNavigation( false );
2086   settings->EnableWebSecurity( false );
2087   settings->EnableCacheBuilder( false );
2088   settings->EnableDoNotTrack( false );
2089   settings->UseScrollbarThumbFocusNotifications( false );
2090   settings->AllowFileAccessFromExternalUrl( false );
2091   settings->AllowScriptsOpenWindows( false );
2092
2093   // Check default value is true or not
2094   bool value = settings->IsArrowScrollEnabled();
2095   DALI_TEST_CHECK( value );
2096
2097   // Check Set/GetProperty
2098   settings->EnableArrowScroll(false);
2099   value = settings->IsArrowScrollEnabled();
2100   DALI_TEST_CHECK( !value );
2101
2102   END_TEST;
2103 }
2104
2105 int UtcDaliWebSettingsCheckEnableClipboard(void)
2106 {
2107   ToolkitTestApplication application;
2108
2109   WebView view = WebView::New();
2110   DALI_TEST_CHECK( view );
2111
2112   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2113   DALI_TEST_CHECK( settings != 0 );
2114
2115   // Reset something
2116   settings->AllowMixedContents( false );
2117   settings->EnableSpatialNavigation( false );
2118   settings->EnableWebSecurity( false );
2119   settings->EnableCacheBuilder( false );
2120   settings->EnableDoNotTrack( false );
2121   settings->UseScrollbarThumbFocusNotifications( false );
2122   settings->AllowFileAccessFromExternalUrl( false );
2123   settings->AllowScriptsOpenWindows( false );
2124
2125   // Check default value is true or not
2126   bool value = settings->IsClipboardEnabled();
2127   DALI_TEST_CHECK( value );
2128   settings->EnableClipboard(false);
2129   value = settings->IsClipboardEnabled();
2130   DALI_TEST_CHECK( !value );
2131   END_TEST;
2132 }
2133
2134 int UtcDaliWebSettingsCheckEnableImePanel(void)
2135 {
2136   ToolkitTestApplication application;
2137
2138   WebView view = WebView::New();
2139   DALI_TEST_CHECK( view );
2140
2141   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2142   DALI_TEST_CHECK( settings != 0 );
2143
2144   // Reset something
2145   settings->AllowMixedContents( false );
2146   settings->EnableSpatialNavigation( false );
2147   settings->EnableWebSecurity( false );
2148   settings->EnableCacheBuilder( false );
2149   settings->EnableDoNotTrack( false );
2150   settings->UseScrollbarThumbFocusNotifications( false );
2151   settings->AllowFileAccessFromExternalUrl( false );
2152   settings->AllowScriptsOpenWindows( false );
2153
2154   // Check default value is true or not
2155   bool value = settings->IsImePanelEnabled();
2156   DALI_TEST_CHECK( value );
2157
2158   // Check Set/GetProperty
2159   settings->EnableImePanel(false);
2160   value = settings->IsImePanelEnabled();
2161   DALI_TEST_CHECK( !value );
2162
2163   END_TEST;
2164 }
2165
2166 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
2167 {
2168   ToolkitTestApplication application;
2169
2170   WebView view = WebView::New();
2171   DALI_TEST_CHECK( view );
2172
2173   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2174   DALI_TEST_CHECK( settings != 0 )
2175
2176   // Reset something
2177   settings->AllowMixedContents( false );
2178   settings->EnableSpatialNavigation( false );
2179   settings->EnableWebSecurity( false );
2180   settings->EnableCacheBuilder( false );
2181   settings->EnableDoNotTrack( false );
2182   settings->UseScrollbarThumbFocusNotifications( false );
2183   settings->AllowFileAccessFromExternalUrl( false );
2184   settings->AllowScriptsOpenWindows( false );
2185
2186   // Check default value is true or not
2187   bool value = settings->AreImagesLoadedAutomatically();
2188   DALI_TEST_CHECK( value );
2189
2190   // Check Set/GetProperty
2191   settings->AllowImagesLoadAutomatically( false );
2192   value = settings->AreImagesLoadedAutomatically();
2193   DALI_TEST_CHECK( !value );
2194
2195   END_TEST;
2196 }
2197
2198 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
2199 {
2200   ToolkitTestApplication application;
2201
2202   WebView view = WebView::New();
2203   DALI_TEST_CHECK( view );
2204
2205   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2206   DALI_TEST_CHECK( settings != 0 )
2207
2208   const std::string kDefaultValue;
2209   const std::string kTestValue = "UTF-8";
2210
2211   // Reset something
2212   settings->AllowMixedContents( false );
2213   settings->EnableSpatialNavigation( false );
2214   settings->EnableWebSecurity( false );
2215   settings->EnableCacheBuilder( false );
2216   settings->EnableDoNotTrack( false );
2217   settings->UseScrollbarThumbFocusNotifications( false );
2218   settings->AllowFileAccessFromExternalUrl( false );
2219   settings->AllowScriptsOpenWindows( false );
2220
2221   // Check default value
2222   std::string value = settings->GetDefaultTextEncodingName();
2223   DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
2224
2225   // Check Set/GetProperty
2226   settings->SetDefaultTextEncodingName( kTestValue );
2227   value = settings->GetDefaultTextEncodingName();
2228   DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );
2229
2230   END_TEST;
2231 }
2232
2233 int UtcDaliWebSettingsSetViewportMetaTag(void)
2234 {
2235   ToolkitTestApplication application;
2236
2237   WebView view = WebView::New();
2238   DALI_TEST_CHECK( view );
2239
2240   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2241   DALI_TEST_CHECK( settings != 0 )
2242
2243   // Check the value is true or not
2244   bool value = settings->SetViewportMetaTag(true);
2245   DALI_TEST_CHECK( value );
2246
2247   END_TEST;
2248 }
2249
2250 int UtcDaliWebSettingsSetForceZoom(void)
2251 {
2252   ToolkitTestApplication application;
2253
2254   WebView view = WebView::New();
2255   DALI_TEST_CHECK( view );
2256
2257   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2258   DALI_TEST_CHECK( settings != 0 )
2259
2260   // Check the value is true or not
2261   bool value = settings->SetForceZoom(true);
2262   DALI_TEST_CHECK( value );
2263
2264   value = settings->IsZoomForced();
2265   DALI_TEST_CHECK( value );
2266
2267   END_TEST;
2268 }
2269
2270 int UtcDaliWebSettingsSetTextZoomEnabled(void)
2271 {
2272   ToolkitTestApplication application;
2273
2274   WebView view = WebView::New();
2275   DALI_TEST_CHECK( view );
2276
2277   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2278   DALI_TEST_CHECK( settings != 0 )
2279
2280   // Check the value is true or not
2281   bool value = settings->SetTextZoomEnabled(true);
2282   DALI_TEST_CHECK( value );
2283
2284   value = settings->IsTextZoomEnabled();
2285   DALI_TEST_CHECK( value );
2286
2287   END_TEST;
2288 }
2289
2290 int UtcDaliWebSettingsSetExtraFeature(void)
2291 {
2292   ToolkitTestApplication application;
2293
2294   WebView view = WebView::New();
2295   DALI_TEST_CHECK( view );
2296
2297   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2298   DALI_TEST_CHECK( settings != 0 )
2299
2300   // Check the value is true or not
2301   settings->SetExtraFeature("test", true);
2302   bool value = settings->IsExtraFeatureEnabled("test");
2303   DALI_TEST_CHECK( value );
2304
2305   END_TEST;
2306 }
2307