[dali_2.0.24] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-WebView.cpp
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #include <iostream>
19 #include <stdlib.h>
20
21 #include <dali-toolkit-test-suite-utils.h>
22 #include "dali-toolkit-test-utils/toolkit-timer.h"
23
24 #include <dali.h>
25 #include <dali/devel-api/adaptor-framework/web-engine-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->EnableCache( true );
1587   context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
1588   context->DeleteAllWebDatabase();
1589   context->DeleteAllWebStorage();
1590   context->DeleteLocalFileSystem();
1591   context->ClearCache();
1592   context->SetContextAppId( "id" );
1593   context->SetContextApplicationType( Dali::WebEngineContext::ApplicationType::OTHER );
1594   context->SetContextTimeOffset( 0 );
1595   context->SetContextTimeZoneOffset( 0, 0 );
1596   context->SetDefaultZoomFactor( 0 );
1597   context->DeleteAllFormPasswordData();
1598   context->DeleteAllFormCandidateData();
1599
1600   // Check default value
1601   Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
1602   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
1603
1604   // Check Set/GetProperty
1605   context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1606   value = context->GetCacheModel();
1607   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1608
1609   // Get cache enabled
1610   DALI_TEST_CHECK( context->IsCacheEnabled() );
1611
1612   // Get certificate
1613   std::string str = context->GetContextCertificateFile();
1614   DALI_TEST_EQUALS( str, "test", TEST_LOCATION );
1615
1616   // Set version
1617   DALI_TEST_CHECK( context->SetContextAppVersion( "test" ) );
1618
1619   // Register
1620   std::vector<std::string> temp;
1621   context->RegisterUrlSchemesAsCorsEnabled( temp );
1622   context->RegisterJsPluginMimeTypes( temp );
1623   context->DeleteFormPasswordDataList( temp );
1624
1625   // Get zoom
1626   DALI_TEST_EQUALS( context->GetContextDefaultZoomFactor(), float( 0 ), TEST_LOCATION );
1627
1628   // Delete cache and database
1629   DALI_TEST_CHECK( context->DeleteAllApplicationCache() );
1630   DALI_TEST_CHECK( context->DeleteAllWebIndexedDatabase() );
1631
1632   // Get contextProxy
1633   context->SetContextProxy("", "");
1634   DALI_TEST_EQUALS( context->GetContextProxy(), "test", TEST_LOCATION );
1635   DALI_TEST_EQUALS( context->GetProxyBypassRule(), "test", TEST_LOCATION );
1636
1637   //Notify low memory
1638   DALI_TEST_CHECK( context->FreeUnusedMemory() );
1639
1640   END_TEST;
1641 }
1642
1643 int UtcDaliWebContextGetWebDatabaseStorageOrigins(void)
1644 {
1645   ToolkitTestApplication application;
1646
1647   WebView view = WebView::New();
1648   DALI_TEST_CHECK( view );
1649
1650   Dali::Toolkit::WebContext* context = view.GetContext();
1651   DALI_TEST_CHECK( context != 0 )
1652
1653   std::string kDefaultValue;
1654
1655   // get origins of web database
1656   bool result = context->GetWebDatabaseOrigins(&OnSecurityOriginsAcquired);
1657   DALI_TEST_CHECK( result );
1658
1659   Test::EmitGlobalTimerSignal();
1660   DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 1, TEST_LOCATION );
1661   DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1662
1663   Dali::WebEngineSecurityOrigin* origin = gSecurityOriginList[0].get();
1664   DALI_TEST_CHECK( origin );
1665
1666   result = context->DeleteWebDatabase(*origin);
1667   DALI_TEST_CHECK( result );
1668
1669   // get origins of web storage
1670   result = context->GetWebStorageOrigins(&OnSecurityOriginsAcquired);
1671   DALI_TEST_CHECK( result );
1672
1673   Test::EmitGlobalTimerSignal();
1674   DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 2, TEST_LOCATION );
1675   DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1676
1677   origin = gSecurityOriginList[0].get();
1678   DALI_TEST_CHECK( origin );
1679
1680   result = context->GetWebStorageUsageForOrigin(*origin, &OnStorageUsageAcquired);
1681   DALI_TEST_CHECK( result );
1682   Test::EmitGlobalTimerSignal();
1683   DALI_TEST_EQUALS( gStorageUsageAcquiredCallbackCalled, 1, TEST_LOCATION );
1684
1685   result = context->DeleteWebStorage(*origin);
1686   DALI_TEST_CHECK( result );
1687
1688   result = context->DeleteApplicationCache(*origin);
1689   DALI_TEST_CHECK( result );
1690
1691   // form passwords, download state, mime type.
1692   context->GetFormPasswordList(&OnFormPasswordsAcquired);
1693   Test::EmitGlobalTimerSignal();
1694   DALI_TEST_EQUALS(gFormPasswordsAcquiredCallbackCalled, 1, TEST_LOCATION);
1695   DALI_TEST_CHECK(gPasswordDataList.size() == 1);
1696   DALI_TEST_EQUALS(gPasswordDataList[0]->url, "http://test.html", TEST_LOCATION);
1697   DALI_TEST_CHECK(gPasswordDataList[0]->useFingerprint == false);
1698
1699   context->RegisterDownloadStartedCallback(&OnDownloadStarted);
1700   Test::EmitGlobalTimerSignal();
1701   DALI_TEST_EQUALS(gDownloadStartedCallbackCalled, 1, TEST_LOCATION);
1702
1703   context->RegisterMimeOverriddenCallback(&OnMimeOverridden);
1704   Test::EmitGlobalTimerSignal();
1705   DALI_TEST_EQUALS(gMimeOverriddenCallbackCalled, 1, TEST_LOCATION);
1706
1707   gSecurityOriginList.clear();
1708   gPasswordDataList.clear();
1709
1710   END_TEST;
1711 }
1712
1713 // test cases for web cookie manager.
1714
1715 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
1716 {
1717   ToolkitTestApplication application;
1718
1719   WebView view = WebView::New();
1720   DALI_TEST_CHECK( view );
1721
1722   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1723   DALI_TEST_CHECK( cookieManager != 0 )
1724
1725   const std::string kDefaultValue;
1726
1727   // Reset something
1728   cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
1729   cookieManager->ClearCookies();
1730
1731   // Check default value
1732   Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
1733   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
1734
1735   // Check Set/GetProperty
1736   cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1737   value = cookieManager->GetCookieAcceptPolicy();
1738   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1739
1740   END_TEST;
1741 }
1742
1743 int UtcDaliWebCookieManagerChangesWatch(void)
1744 {
1745   ToolkitTestApplication application;
1746
1747   WebView view = WebView::New();
1748   DALI_TEST_CHECK( view );
1749
1750   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1751   DALI_TEST_CHECK( cookieManager != 0 )
1752
1753   cookieManager->ChangesWatch(&OnChangesWatch);
1754   Test::EmitGlobalTimerSignal();
1755   DALI_TEST_EQUALS( gCookieManagerChangsWatchCallbackCalled, 1, TEST_LOCATION );
1756
1757   END_TEST;
1758 }
1759
1760 // test cases for web settings.
1761
1762 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
1763 {
1764   ToolkitTestApplication application;
1765
1766   WebView view = WebView::New();
1767   DALI_TEST_CHECK( view );
1768
1769   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1770   DALI_TEST_CHECK( settings != 0 )
1771
1772   // Reset something
1773   settings->AllowMixedContents( false );
1774   settings->EnableSpatialNavigation( false );
1775   settings->EnableWebSecurity( false );
1776   settings->EnableCacheBuilder( false );
1777   settings->EnableDoNotTrack( false );
1778   settings->UseScrollbarThumbFocusNotifications( false );
1779   settings->AllowFileAccessFromExternalUrl( false );
1780   settings->AllowScriptsOpenWindows( false );
1781
1782   // Check default value
1783   int value = settings->GetDefaultFontSize();
1784   DALI_TEST_CHECK( value == 16 );
1785
1786   // Check Set/GetProperty
1787   settings->SetDefaultFontSize( 20 );
1788   value = settings->GetDefaultFontSize();
1789   DALI_TEST_CHECK( value == 20 );
1790
1791   END_TEST;
1792 }
1793
1794 int UtcDaliWebSettingsCheckEnableJavaScript(void)
1795 {
1796   ToolkitTestApplication application;
1797
1798   WebView view = WebView::New();
1799   DALI_TEST_CHECK( view );
1800
1801   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1802   DALI_TEST_CHECK( settings != 0 )
1803
1804   // Reset something
1805   settings->AllowMixedContents( false );
1806   settings->EnableSpatialNavigation( false );
1807   settings->EnableWebSecurity( false );
1808   settings->EnableCacheBuilder( false );
1809   settings->EnableDoNotTrack( false );
1810   settings->UseScrollbarThumbFocusNotifications( false );
1811   settings->AllowFileAccessFromExternalUrl( false );
1812   settings->AllowScriptsOpenWindows( false );
1813
1814   // Check default value is true or not
1815   bool value = settings->IsJavaScriptEnabled();
1816   DALI_TEST_CHECK( value );
1817
1818   // Check Set/GetProperty
1819   settings->EnableJavaScript( false );
1820   value = settings->IsJavaScriptEnabled();
1821   DALI_TEST_CHECK( !value );
1822
1823   END_TEST;
1824 }
1825
1826 int UtcDaliWebSettingsCheckEnableAutoFitting(void)
1827 {
1828   ToolkitTestApplication application;
1829
1830   WebView view = WebView::New();
1831   DALI_TEST_CHECK( view );
1832
1833   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1834   DALI_TEST_CHECK( settings != 0 )
1835
1836   // Reset something
1837   settings->AllowMixedContents( false );
1838   settings->EnableSpatialNavigation( false );
1839   settings->EnableWebSecurity( false );
1840   settings->EnableCacheBuilder( false );
1841   settings->EnableDoNotTrack( false );
1842   settings->UseScrollbarThumbFocusNotifications( false );
1843   settings->AllowFileAccessFromExternalUrl( false );
1844   settings->AllowScriptsOpenWindows( false );
1845
1846   // Check default value is true or not
1847   bool value = settings->IsAutoFittingEnabled();
1848   DALI_TEST_CHECK( value );
1849
1850   // Check Set/GetProperty
1851   settings->EnableAutoFitting( false );
1852   value = settings->IsAutoFittingEnabled();
1853   DALI_TEST_CHECK( !value );
1854
1855   END_TEST;
1856 }
1857
1858 int UtcDaliWebSettingsCheckEnablePlugins(void)
1859 {
1860   ToolkitTestApplication application;
1861
1862   WebView view = WebView::New();
1863   DALI_TEST_CHECK( view );
1864
1865   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1866   DALI_TEST_CHECK( settings != 0 )
1867
1868   // Reset something
1869   settings->AllowMixedContents( false );
1870   settings->EnableSpatialNavigation( false );
1871   settings->EnableWebSecurity( false );
1872   settings->EnableCacheBuilder( false );
1873   settings->EnableDoNotTrack( false );
1874   settings->UseScrollbarThumbFocusNotifications( false );
1875   settings->AllowFileAccessFromExternalUrl( false );
1876   settings->AllowScriptsOpenWindows( false );
1877
1878   // Check default value is true or not
1879   bool value = settings->ArePluginsEnabled();
1880   DALI_TEST_CHECK( value );
1881
1882   // Check Set/GetProperty
1883   settings->EnablePlugins( false );
1884   value = settings->ArePluginsEnabled();
1885   DALI_TEST_CHECK( !value );
1886
1887   END_TEST;
1888 }
1889
1890 int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void)
1891 {
1892   ToolkitTestApplication application;
1893
1894   WebView view = WebView::New();
1895   DALI_TEST_CHECK( view );
1896
1897   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1898   DALI_TEST_CHECK( settings != 0 )
1899
1900   // Reset something
1901   settings->AllowMixedContents( false );
1902   settings->EnableSpatialNavigation( false );
1903   settings->EnableWebSecurity( false );
1904   settings->EnableCacheBuilder( false );
1905   settings->EnableDoNotTrack( false );
1906   settings->UseScrollbarThumbFocusNotifications( false );
1907   settings->AllowFileAccessFromExternalUrl( false );
1908   settings->AllowScriptsOpenWindows( false );
1909
1910   // Check default value is true or not
1911   bool value = settings->IsPrivateBrowsingEnabled();
1912   DALI_TEST_CHECK( value );
1913
1914   // Check Set/GetProperty
1915   settings->EnablePrivateBrowsing( false );
1916   value = settings->IsPrivateBrowsingEnabled();
1917   DALI_TEST_CHECK( !value );
1918
1919   END_TEST;
1920 }
1921
1922 int UtcDaliWebSettingsCheckEnableLinkMagnifier(void)
1923 {
1924   ToolkitTestApplication application;
1925
1926   WebView view = WebView::New();
1927   DALI_TEST_CHECK( view );
1928
1929   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1930   DALI_TEST_CHECK( settings != 0 )
1931
1932   // Reset something
1933   settings->AllowMixedContents( false );
1934   settings->EnableSpatialNavigation( false );
1935   settings->EnableWebSecurity( false );
1936   settings->EnableCacheBuilder( false );
1937   settings->EnableDoNotTrack( false );
1938   settings->UseScrollbarThumbFocusNotifications( false );
1939   settings->AllowFileAccessFromExternalUrl( false );
1940   settings->AllowScriptsOpenWindows( false );
1941
1942   // Check default value is true or not
1943   bool value = settings->IsLinkMagnifierEnabled();
1944   DALI_TEST_CHECK( value );
1945
1946   // Check Set/GetProperty
1947   settings->EnableLinkMagnifier( false );
1948   value = settings->IsLinkMagnifierEnabled();
1949   DALI_TEST_CHECK( !value );
1950
1951   END_TEST;
1952 }
1953
1954 int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void)
1955 {
1956   ToolkitTestApplication application;
1957
1958   WebView view = WebView::New();
1959   DALI_TEST_CHECK( view );
1960
1961   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1962   DALI_TEST_CHECK( settings != 0 )
1963
1964   // Reset something
1965   settings->AllowMixedContents( false );
1966   settings->EnableSpatialNavigation( false );
1967   settings->EnableWebSecurity( false );
1968   settings->EnableCacheBuilder( false );
1969   settings->EnableDoNotTrack( false );
1970   settings->UseScrollbarThumbFocusNotifications( false );
1971   settings->AllowFileAccessFromExternalUrl( false );
1972   settings->AllowScriptsOpenWindows( false );
1973
1974   // Check default value is true or not
1975   bool value = settings->IsKeypadWithoutUserActionUsed();
1976   DALI_TEST_CHECK( value );
1977
1978   // Check Set/GetProperty
1979   settings->UseKeypadWithoutUserAction( false );
1980   value = settings->IsKeypadWithoutUserActionUsed();
1981   DALI_TEST_CHECK( !value );
1982
1983   END_TEST;
1984 }
1985
1986 int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void)
1987 {
1988   ToolkitTestApplication application;
1989
1990   WebView view = WebView::New();
1991   DALI_TEST_CHECK( view );
1992
1993   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1994   DALI_TEST_CHECK( settings != 0 )
1995
1996   // Reset something
1997   settings->AllowMixedContents( false );
1998   settings->EnableSpatialNavigation( false );
1999   settings->EnableWebSecurity( false );
2000   settings->EnableCacheBuilder( false );
2001   settings->EnableDoNotTrack( false );
2002   settings->UseScrollbarThumbFocusNotifications( false );
2003   settings->AllowFileAccessFromExternalUrl( false );
2004   settings->AllowScriptsOpenWindows( false );
2005
2006   // Check default value is true or not
2007   bool value = settings->IsAutofillPasswordFormEnabled();
2008   DALI_TEST_CHECK( value );
2009   settings->EnableAutofillPasswordForm( false );
2010   value = settings->IsAutofillPasswordFormEnabled();
2011   DALI_TEST_CHECK( !value );
2012   END_TEST;
2013 }
2014
2015 int UtcDaliWebSettingsCheckEnableFormCandidateData(void)
2016 {
2017   ToolkitTestApplication application;
2018
2019   WebView view = WebView::New();
2020   DALI_TEST_CHECK( view );
2021
2022   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2023   DALI_TEST_CHECK( settings != 0 );
2024
2025   // Reset something
2026   settings->AllowMixedContents( false );
2027   settings->EnableSpatialNavigation( false );
2028   settings->EnableWebSecurity( false );
2029   settings->EnableCacheBuilder( false );
2030   settings->EnableDoNotTrack( false );
2031   settings->UseScrollbarThumbFocusNotifications( false );
2032   settings->AllowFileAccessFromExternalUrl( false );
2033   settings->AllowScriptsOpenWindows( false );
2034
2035   // Check default value is true or not
2036   bool value = settings->IsFormCandidateDataEnabled();
2037   DALI_TEST_CHECK( value );
2038
2039   // Check Set/GetProperty
2040   settings->EnableFormCandidateData( false );
2041   value = settings->IsFormCandidateDataEnabled();
2042   DALI_TEST_CHECK( !value );
2043
2044   END_TEST;
2045 }
2046
2047 int UtcDaliWebSettingsCheckEnableTextSelection(void)
2048 {
2049   ToolkitTestApplication application;
2050
2051   WebView view = WebView::New();
2052   DALI_TEST_CHECK( view );
2053
2054   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2055   DALI_TEST_CHECK( settings != 0 );
2056
2057   // Reset something
2058   settings->AllowMixedContents( false );
2059   settings->EnableSpatialNavigation( false );
2060   settings->EnableWebSecurity( false );
2061   settings->EnableCacheBuilder( false );
2062   settings->EnableDoNotTrack( false );
2063   settings->UseScrollbarThumbFocusNotifications( false );
2064   settings->AllowFileAccessFromExternalUrl( false );
2065   settings->AllowScriptsOpenWindows( false );
2066
2067   // Check default value is true or not
2068   bool value = settings->IsTextSelectionEnabled();
2069   DALI_TEST_CHECK( value );
2070
2071   //Check Set/GetProperty
2072   settings->EnableTextSelection(false);
2073   value = settings->IsTextSelectionEnabled();
2074   DALI_TEST_CHECK( !value );
2075
2076   END_TEST;
2077 }
2078
2079 int UtcDaliWebSettingsCheckEnableTextAutosizing(void)
2080 {
2081   ToolkitTestApplication application;
2082
2083   WebView view = WebView::New();
2084   DALI_TEST_CHECK( view );
2085
2086   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2087   DALI_TEST_CHECK( settings != 0 );
2088
2089   // Reset something
2090   settings->AllowMixedContents( false );
2091   settings->EnableSpatialNavigation( false );
2092   settings->EnableWebSecurity( false );
2093   settings->EnableCacheBuilder( false );
2094   settings->EnableDoNotTrack( false );
2095   settings->UseScrollbarThumbFocusNotifications( false );
2096   settings->AllowFileAccessFromExternalUrl( false );
2097   settings->AllowScriptsOpenWindows( false );
2098
2099   // Check default value is true or not
2100   bool value = settings->IsTextAutosizingEnabled();
2101   DALI_TEST_CHECK( value );
2102
2103   // Check Set/GetProperty
2104   settings->EnableTextAutosizing(false);
2105   value = settings->IsTextAutosizingEnabled();
2106   DALI_TEST_CHECK( !value );
2107
2108   END_TEST;
2109 }
2110
2111 int UtcDaliWebSettingsCheckEnableArrowScroll(void)
2112 {
2113   ToolkitTestApplication application;
2114
2115   WebView view = WebView::New();
2116   DALI_TEST_CHECK( view );
2117
2118   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2119   DALI_TEST_CHECK( settings != 0 );
2120
2121   // Reset something
2122   settings->AllowMixedContents( false );
2123   settings->EnableSpatialNavigation( false );
2124   settings->EnableWebSecurity( false );
2125   settings->EnableCacheBuilder( false );
2126   settings->EnableDoNotTrack( false );
2127   settings->UseScrollbarThumbFocusNotifications( false );
2128   settings->AllowFileAccessFromExternalUrl( false );
2129   settings->AllowScriptsOpenWindows( false );
2130
2131   // Check default value is true or not
2132   bool value = settings->IsArrowScrollEnabled();
2133   DALI_TEST_CHECK( value );
2134
2135   // Check Set/GetProperty
2136   settings->EnableArrowScroll(false);
2137   value = settings->IsArrowScrollEnabled();
2138   DALI_TEST_CHECK( !value );
2139
2140   END_TEST;
2141 }
2142
2143 int UtcDaliWebSettingsCheckEnableClipboard(void)
2144 {
2145   ToolkitTestApplication application;
2146
2147   WebView view = WebView::New();
2148   DALI_TEST_CHECK( view );
2149
2150   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2151   DALI_TEST_CHECK( settings != 0 );
2152
2153   // Reset something
2154   settings->AllowMixedContents( false );
2155   settings->EnableSpatialNavigation( false );
2156   settings->EnableWebSecurity( false );
2157   settings->EnableCacheBuilder( false );
2158   settings->EnableDoNotTrack( false );
2159   settings->UseScrollbarThumbFocusNotifications( false );
2160   settings->AllowFileAccessFromExternalUrl( false );
2161   settings->AllowScriptsOpenWindows( false );
2162
2163   // Check default value is true or not
2164   bool value = settings->IsClipboardEnabled();
2165   DALI_TEST_CHECK( value );
2166   settings->EnableClipboard(false);
2167   value = settings->IsClipboardEnabled();
2168   DALI_TEST_CHECK( !value );
2169   END_TEST;
2170 }
2171
2172 int UtcDaliWebSettingsCheckEnableImePanel(void)
2173 {
2174   ToolkitTestApplication application;
2175
2176   WebView view = WebView::New();
2177   DALI_TEST_CHECK( view );
2178
2179   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2180   DALI_TEST_CHECK( settings != 0 );
2181
2182   // Reset something
2183   settings->AllowMixedContents( false );
2184   settings->EnableSpatialNavigation( false );
2185   settings->EnableWebSecurity( false );
2186   settings->EnableCacheBuilder( false );
2187   settings->EnableDoNotTrack( false );
2188   settings->UseScrollbarThumbFocusNotifications( false );
2189   settings->AllowFileAccessFromExternalUrl( false );
2190   settings->AllowScriptsOpenWindows( false );
2191
2192   // Check default value is true or not
2193   bool value = settings->IsImePanelEnabled();
2194   DALI_TEST_CHECK( value );
2195
2196   // Check Set/GetProperty
2197   settings->EnableImePanel(false);
2198   value = settings->IsImePanelEnabled();
2199   DALI_TEST_CHECK( !value );
2200
2201   END_TEST;
2202 }
2203
2204 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
2205 {
2206   ToolkitTestApplication application;
2207
2208   WebView view = WebView::New();
2209   DALI_TEST_CHECK( view );
2210
2211   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2212   DALI_TEST_CHECK( settings != 0 )
2213
2214   // Reset something
2215   settings->AllowMixedContents( false );
2216   settings->EnableSpatialNavigation( false );
2217   settings->EnableWebSecurity( false );
2218   settings->EnableCacheBuilder( false );
2219   settings->EnableDoNotTrack( false );
2220   settings->UseScrollbarThumbFocusNotifications( false );
2221   settings->AllowFileAccessFromExternalUrl( false );
2222   settings->AllowScriptsOpenWindows( false );
2223
2224   // Check default value is true or not
2225   bool value = settings->AreImagesLoadedAutomatically();
2226   DALI_TEST_CHECK( value );
2227
2228   // Check Set/GetProperty
2229   settings->AllowImagesLoadAutomatically( false );
2230   value = settings->AreImagesLoadedAutomatically();
2231   DALI_TEST_CHECK( !value );
2232
2233   END_TEST;
2234 }
2235
2236 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
2237 {
2238   ToolkitTestApplication application;
2239
2240   WebView view = WebView::New();
2241   DALI_TEST_CHECK( view );
2242
2243   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2244   DALI_TEST_CHECK( settings != 0 )
2245
2246   const std::string kDefaultValue;
2247   const std::string kTestValue = "UTF-8";
2248
2249   // Reset something
2250   settings->AllowMixedContents( false );
2251   settings->EnableSpatialNavigation( false );
2252   settings->EnableWebSecurity( false );
2253   settings->EnableCacheBuilder( false );
2254   settings->EnableDoNotTrack( false );
2255   settings->UseScrollbarThumbFocusNotifications( false );
2256   settings->AllowFileAccessFromExternalUrl( false );
2257   settings->AllowScriptsOpenWindows( false );
2258
2259   // Check default value
2260   std::string value = settings->GetDefaultTextEncodingName();
2261   DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
2262
2263   // Check Set/GetProperty
2264   settings->SetDefaultTextEncodingName( kTestValue );
2265   value = settings->GetDefaultTextEncodingName();
2266   DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );
2267
2268   END_TEST;
2269 }
2270
2271 int UtcDaliWebSettingsSetViewportMetaTag(void)
2272 {
2273   ToolkitTestApplication application;
2274
2275   WebView view = WebView::New();
2276   DALI_TEST_CHECK( view );
2277
2278   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2279   DALI_TEST_CHECK( settings != 0 )
2280
2281   // Check the value is true or not
2282   bool value = settings->SetViewportMetaTag(true);
2283   DALI_TEST_CHECK( value );
2284
2285   END_TEST;
2286 }
2287
2288 int UtcDaliWebSettingsSetForceZoom(void)
2289 {
2290   ToolkitTestApplication application;
2291
2292   WebView view = WebView::New();
2293   DALI_TEST_CHECK( view );
2294
2295   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2296   DALI_TEST_CHECK( settings != 0 )
2297
2298   // Check the value is true or not
2299   bool value = settings->SetForceZoom(true);
2300   DALI_TEST_CHECK( value );
2301
2302   value = settings->IsZoomForced();
2303   DALI_TEST_CHECK( value );
2304
2305   END_TEST;
2306 }
2307
2308 int UtcDaliWebSettingsSetTextZoomEnabled(void)
2309 {
2310   ToolkitTestApplication application;
2311
2312   WebView view = WebView::New();
2313   DALI_TEST_CHECK( view );
2314
2315   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2316   DALI_TEST_CHECK( settings != 0 )
2317
2318   // Check the value is true or not
2319   bool value = settings->SetTextZoomEnabled(true);
2320   DALI_TEST_CHECK( value );
2321
2322   value = settings->IsTextZoomEnabled();
2323   DALI_TEST_CHECK( value );
2324
2325   END_TEST;
2326 }
2327
2328 int UtcDaliWebSettingsSetExtraFeature(void)
2329 {
2330   ToolkitTestApplication application;
2331
2332   WebView view = WebView::New();
2333   DALI_TEST_CHECK( view );
2334
2335   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2336   DALI_TEST_CHECK( settings != 0 )
2337
2338   // Check the value is true or not
2339   settings->SetExtraFeature("test", true);
2340   bool value = settings->IsExtraFeatureEnabled("test");
2341   DALI_TEST_CHECK( value );
2342
2343   END_TEST;
2344 }
2345