Merge "Fix crash issue when favicon is null." into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-WebView.cpp
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #include <iostream>
19 #include <stdlib.h>
20
21 #include <dali-toolkit-test-suite-utils.h>
22 #include "dali-toolkit-test-utils/toolkit-timer.h"
23
24 #include <dali.h>
25 #include <dali/devel-api/adaptor-framework/web-engine-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 gResponsePolicyDecidedCallbackCalled = 0;
85 static std::shared_ptr<Dali::WebEnginePolicyDecision> gResponsePolicyDecisionInstance = 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 OnResponsePolicyDecided(WebView view, std::shared_ptr<Dali::WebEnginePolicyDecision> decision)
141 {
142   gResponsePolicyDecidedCallbackCalled++;
143   gResponsePolicyDecisionInstance = 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 the case that favicon is not null.
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   // Check the case that favicon is null.
1069   favicon = view.GetFavicon();
1070   DALI_TEST_CHECK( !favicon );
1071
1072   END_TEST;
1073 }
1074
1075 int UtcDaliWebViewContextMenuCustomizedAndItemSelected(void)
1076 {
1077   ToolkitTestApplication application;
1078
1079   WebView view = WebView::New();
1080   DALI_TEST_CHECK( view );
1081
1082   // load url.
1083   ConnectionTracker* testTracker = new ConnectionTracker();
1084   view.ContextMenuCustomizedSignal().Connect( &OnContextMenuCustomized );
1085   view.ContextMenuItemSelectedSignal().Connect( &OnContextMenuItemSelected );
1086   bool signal1 = false;
1087   bool signal2 = false;
1088   view.ConnectSignal( testTracker, "contextMenuCustomized", CallbackFunctor(&signal1) );
1089   view.ConnectSignal( testTracker, "contextMenuItemSelected", CallbackFunctor(&signal2) );
1090   DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 0, TEST_LOCATION );
1091   DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 0, TEST_LOCATION );
1092   DALI_TEST_CHECK(gContextMenuInstance == 0);
1093   DALI_TEST_CHECK(gContextMenuItemInstance == 0);
1094
1095   view.LoadUrl( TEST_URL1 );
1096   Test::EmitGlobalTimerSignal();
1097   DALI_TEST_EQUALS( gContextMenuCustomizedCallbackCalled, 1, TEST_LOCATION );
1098   DALI_TEST_EQUALS( gContextMenuItemSelectedCallbackCalled, 1, TEST_LOCATION );
1099   DALI_TEST_CHECK( signal1 );
1100   DALI_TEST_CHECK( signal2 );
1101
1102   // check context meun & its items.
1103   DALI_TEST_CHECK(gContextMenuInstance != 0);
1104   std::unique_ptr<Dali::WebEngineContextMenuItem> item = gContextMenuInstance->GetItemAt(0);
1105   DALI_TEST_CHECK(item.get() != 0);
1106   std::vector<std::unique_ptr<Dali::WebEngineContextMenuItem>> itemList = gContextMenuInstance->GetItemList();
1107   DALI_TEST_CHECK(itemList.size() == 1);
1108   Dali::Vector2 testPosition = Dali::Vector2(100, 100);
1109   DALI_TEST_EQUALS(gContextMenuInstance->GetPosition(), testPosition, TEST_LOCATION);
1110   DALI_TEST_CHECK(gContextMenuInstance->RemoveItem(*(item.get())));
1111   DALI_TEST_CHECK(gContextMenuInstance->AppendItemAsAction(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", false));
1112   DALI_TEST_CHECK(gContextMenuInstance->AppendItem(WebEngineContextMenuItem::ItemTag::NO_ACTION, "", "", false));
1113   DALI_TEST_CHECK(gContextMenuInstance->SelectItem(*(item.get())));
1114   DALI_TEST_CHECK(gContextMenuInstance->Hide());
1115
1116   DALI_TEST_CHECK(gContextMenuItemInstance != 0);
1117   Dali::WebEngineContextMenuItem::ItemTag testItemTag = Dali::WebEngineContextMenuItem::ItemTag::NO_ACTION;
1118   DALI_TEST_EQUALS(gContextMenuItemInstance->GetTag(), testItemTag, TEST_LOCATION);
1119   Dali::WebEngineContextMenuItem::ItemType testItemType = Dali::WebEngineContextMenuItem::ItemType::ACTION;
1120   DALI_TEST_EQUALS(gContextMenuItemInstance->GetType(), testItemType, TEST_LOCATION);
1121   DALI_TEST_CHECK(gContextMenuItemInstance->IsEnabled());
1122   std::string testLinkUrl("http://test.html");
1123   DALI_TEST_EQUALS(gContextMenuItemInstance->GetLinkUrl(), testLinkUrl, TEST_LOCATION);
1124   std::string testImageUrl("http://test.jpg");
1125   DALI_TEST_EQUALS(gContextMenuItemInstance->GetImageUrl(), testImageUrl, TEST_LOCATION);
1126   std::string testTitle("title");
1127   DALI_TEST_EQUALS(gContextMenuItemInstance->GetTitle(), testTitle, TEST_LOCATION);
1128   DALI_TEST_CHECK(gContextMenuItemInstance->GetParentMenu().get() == 0);
1129
1130   gContextMenuInstance = nullptr;
1131   gContextMenuItemInstance = nullptr;
1132
1133   END_TEST;
1134 }
1135
1136 int UtcDaliWebViewScrollBy(void)
1137 {
1138   ToolkitTestApplication application;
1139
1140   WebView view = WebView::New();
1141   DALI_TEST_CHECK( view );
1142
1143   // load url.
1144   ConnectionTracker* testTracker = new ConnectionTracker();
1145   view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
1146   bool signal1 = false;
1147   view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
1148   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
1149
1150   view.LoadUrl( TEST_URL1 );
1151   Test::EmitGlobalTimerSignal();
1152
1153   // set scroll position.
1154   Dali::Vector2 output = Dali::Vector2::ONE;
1155   Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
1156   view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
1157   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1158   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
1159
1160   // scroll by and trigger scrollEdgeReached event.
1161   view.ScrollBy( 50, 50 );
1162   Test::EmitGlobalTimerSignal();
1163
1164   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1165   DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
1166   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
1167   DALI_TEST_CHECK( signal1 );
1168
1169   // scroll by and trigger scrollEdgeReached event.
1170   bool result = view.ScrollEdgeBy( 50, 50 );
1171   DALI_TEST_CHECK( result );
1172   Test::EmitGlobalTimerSignal();
1173
1174   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
1175   DALI_TEST_CHECK( output.x == 200 && output.y == 200 );
1176   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 2, TEST_LOCATION );
1177   DALI_TEST_CHECK( signal1 );
1178
1179   END_TEST;
1180 }
1181
1182 int UtcDaliWebViewSetGetScaleFactorActivateAccessibility(void)
1183 {
1184   ToolkitTestApplication application;
1185
1186   WebView view = WebView::New();
1187   DALI_TEST_CHECK( view );
1188
1189   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1190   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1191   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1192   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1193
1194   application.GetScene().Add( view );
1195   application.SendNotification();
1196   application.Render();
1197
1198   view.ActivateAccessibility(true);
1199   view.AddDynamicCertificatePath("host", "test/to/path");
1200   bool found = view.HighlightText("test", Dali::WebEnginePlugin::FindOption::CASE_INSENSITIVE, 2);
1201   DALI_TEST_CHECK( found );
1202
1203   view.SetScaleFactor(1.5f, Dali::Vector2(0.0f, 0.0f));
1204   float result = view.GetScaleFactor();
1205   DALI_TEST_EQUALS( result, 1.5f, TEST_LOCATION );
1206
1207   view.SetScaleFactor(1.0f, Dali::Vector2(0.0f, 0.0f));
1208   result = view.GetScaleFactor();
1209   DALI_TEST_EQUALS( result, 1.0f, TEST_LOCATION );
1210
1211   END_TEST;
1212 }
1213
1214 int UtcDaliWebViewGetScreenshotSyncAndAsync(void)
1215 {
1216   // SCROLL_POSITION
1217   ToolkitTestApplication application;
1218
1219   char argv[] = "--test";
1220   WebView view = WebView::New( 1, (char**)&argv );
1221   DALI_TEST_CHECK( view );
1222
1223   // Check GetScreenshot
1224   Dali::Rect<int> viewArea;
1225   viewArea.x = 100;
1226   viewArea.y = 100;
1227   viewArea.width = 10;
1228   viewArea.height = 10;
1229   Dali::Toolkit::ImageView screenshot = view.GetScreenshot(viewArea, 1.0f);
1230   DALI_TEST_CHECK( screenshot );
1231   Dali::Vector3 shotsize = screenshot.GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
1232   DALI_TEST_CHECK( ( int )shotsize.width == viewArea.width && ( int )shotsize.height == viewArea.height );
1233
1234   // Check GetScreenshotAsynchronously
1235   viewArea.x = 100;
1236   viewArea.y = 100;
1237   viewArea.width = 100;
1238   viewArea.height = 100;
1239   bool result = view.GetScreenshotAsynchronously(viewArea, 1.0f, &OnScreenshotCaptured);
1240   DALI_TEST_CHECK( result );
1241
1242   Test::EmitGlobalTimerSignal();
1243
1244   Test::EmitGlobalTimerSignal();
1245   DALI_TEST_EQUALS( gScreenshotCapturedCallbackCalled, 1, TEST_LOCATION );
1246
1247   END_TEST;
1248 }
1249
1250 int UtcDaliWebViewVideoPlayingGeolocationPermission(void)
1251 {
1252   // SCROLL_POSITION
1253   ToolkitTestApplication application;
1254
1255   char argv[] = "--test";
1256   WebView view = WebView::New( 1, (char**)&argv );
1257   DALI_TEST_CHECK( view );
1258
1259   // Check CheckVideoPlayingAsynchronously
1260   bool result = view.CheckVideoPlayingAsynchronously(&OnVideoPlaying);
1261   DALI_TEST_CHECK( result );
1262   Test::EmitGlobalTimerSignal();
1263   DALI_TEST_EQUALS( gVideoPlayingCallbackCalled, 1, TEST_LOCATION );
1264
1265   // Check RegisterGeolocationPermissionCallback
1266   view.RegisterGeolocationPermissionCallback(&OnGeolocationPermission);
1267   Test::EmitGlobalTimerSignal();
1268   DALI_TEST_EQUALS( gGeolocationPermissionCallbackCalled, 1, TEST_LOCATION );
1269
1270   END_TEST;
1271 }
1272
1273 int UtcDaliWebViewHttpRequestInterceptor(void)
1274 {
1275   ToolkitTestApplication application;
1276
1277   WebView view = WebView::New();
1278   DALI_TEST_CHECK( view );
1279
1280   // load url.
1281   ConnectionTracker* testTracker = new ConnectionTracker();
1282   view.RequestInterceptorSignal().Connect( &OnRequestInterceptor );
1283   bool signal1 = false;
1284   view.ConnectSignal( testTracker, "requestInterceptor", CallbackFunctor(&signal1) );
1285   DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 0, TEST_LOCATION );
1286   DALI_TEST_CHECK(gRequestInterceptorInstance == 0);
1287
1288   view.LoadUrl( TEST_URL1 );
1289   Test::EmitGlobalTimerSignal();
1290   DALI_TEST_EQUALS( gRequestInterceptorCallbackCalled, 1, TEST_LOCATION );
1291   DALI_TEST_CHECK( signal1 );
1292
1293   // check request interceptor.
1294   DALI_TEST_CHECK(gRequestInterceptorInstance != 0);
1295   DALI_TEST_CHECK(gRequestInterceptorInstance->Ignore());
1296   DALI_TEST_CHECK(gRequestInterceptorInstance->SetResponseStatus(400, "error"));
1297   DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseHeader("key", "value"));
1298   DALI_TEST_CHECK(gRequestInterceptorInstance->AddResponseBody("test", 4));
1299   std::string testUrl("http://test.html");
1300   DALI_TEST_EQUALS(gRequestInterceptorInstance->GetUrl(), testUrl, TEST_LOCATION);
1301
1302   gRequestInterceptorInstance = nullptr;
1303
1304   END_TEST;
1305 }
1306
1307 int UtcDaliWebViewResponsePolicyDecisionRequest(void)
1308 {
1309   ToolkitTestApplication application;
1310
1311   WebView view = WebView::New();
1312   DALI_TEST_CHECK( view );
1313
1314   // load url.
1315   ConnectionTracker* testTracker = new ConnectionTracker();
1316   view.ResponsePolicyDecisionSignal().Connect( &OnResponsePolicyDecided );
1317   bool signal1 = false;
1318   view.ConnectSignal( testTracker, "responsePolicyDecided", CallbackFunctor(&signal1) );
1319   DALI_TEST_EQUALS( gResponsePolicyDecidedCallbackCalled, 0, TEST_LOCATION );
1320   DALI_TEST_CHECK(gResponsePolicyDecisionInstance == 0);
1321
1322   view.LoadUrl( TEST_URL1 );
1323   Test::EmitGlobalTimerSignal();
1324   DALI_TEST_EQUALS( gResponsePolicyDecidedCallbackCalled, 1, TEST_LOCATION );
1325   DALI_TEST_CHECK( signal1 );
1326
1327   // check response policy decision & its frame.
1328   DALI_TEST_CHECK(gResponsePolicyDecisionInstance != 0);
1329   std::string testUrl("http://test.html");
1330   DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetUrl(), testUrl, TEST_LOCATION);
1331   std::string testCookie("test:abc");
1332   DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetCookie(), testCookie, TEST_LOCATION);
1333   Dali::WebEnginePolicyDecision::DecisionType testDecisionType = Dali::WebEnginePolicyDecision::DecisionType::USE;
1334   DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetDecisionType(), testDecisionType, TEST_LOCATION);
1335   std::string testResponseMime("txt/xml");
1336   DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetResponseMime(), testResponseMime, TEST_LOCATION);
1337   int32_t ResponseStatusCode = 500;
1338   DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetResponseStatusCode(), ResponseStatusCode, TEST_LOCATION);
1339   Dali::WebEnginePolicyDecision::NavigationType testNavigationType = Dali::WebEnginePolicyDecision::NavigationType::LINK_CLICKED;
1340   DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetNavigationType(), testNavigationType, TEST_LOCATION);
1341   std::string testScheme("test");
1342   DALI_TEST_EQUALS(gResponsePolicyDecisionInstance->GetScheme(), testScheme, TEST_LOCATION);
1343   DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Use());
1344   DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Ignore());
1345   DALI_TEST_CHECK(gResponsePolicyDecisionInstance->Suspend());
1346
1347   Dali::WebEngineFrame* webFrame = &(gResponsePolicyDecisionInstance->GetFrame());
1348   DALI_TEST_CHECK(webFrame);
1349   DALI_TEST_CHECK(webFrame->IsMainFrame());
1350
1351   gResponsePolicyDecisionInstance = nullptr;
1352
1353   END_TEST;
1354 }
1355
1356 int UtcDaliWebViewHitTest(void)
1357 {
1358   ToolkitTestApplication application;
1359
1360   WebView view = WebView::New();
1361   DALI_TEST_CHECK( view );
1362
1363   // load url.
1364   view.LoadUrl( TEST_URL1 );
1365
1366   // sync hit test.
1367   std::unique_ptr<Dali::WebEngineHitTest> hitTest = view.CreateHitTest(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT);
1368   DALI_TEST_CHECK(hitTest != 0);
1369   DALI_TEST_EQUALS(hitTest->GetResultContext(), Dali::WebEngineHitTest::ResultContext::DOCUMENT, TEST_LOCATION);
1370   std::string testLinkUri("http://test.html");
1371   DALI_TEST_EQUALS(hitTest->GetLinkUri(), testLinkUri, TEST_LOCATION);
1372   std::string testLinkTitle("test");
1373   DALI_TEST_EQUALS(hitTest->GetLinkTitle(), testLinkTitle, TEST_LOCATION);
1374   std::string testLinkLabel("label");
1375   DALI_TEST_EQUALS(hitTest->GetLinkLabel(), testLinkLabel, TEST_LOCATION);
1376   std::string testImageUri("http://test.jpg");
1377   DALI_TEST_EQUALS(hitTest->GetImageUri(), testImageUri, TEST_LOCATION);
1378   std::string testMediaUri("http://test.mp4");
1379   DALI_TEST_EQUALS(hitTest->GetMediaUri(), testMediaUri, TEST_LOCATION);
1380   std::string testTagName("img");
1381   DALI_TEST_EQUALS(hitTest->GetTagName(), testTagName, TEST_LOCATION);
1382   std::string testNodeValue("test");
1383   DALI_TEST_EQUALS(hitTest->GetNodeValue(), testNodeValue, TEST_LOCATION);
1384   Dali::Property::Map* testMap = &hitTest->GetAttributes();
1385   DALI_TEST_CHECK(testMap);
1386   std::string testImageFileNameExtension("jpg");
1387   DALI_TEST_EQUALS(hitTest->GetImageFileNameExtension(), testImageFileNameExtension, TEST_LOCATION);
1388   Dali::PixelData testImageBuffer = hitTest->GetImageBuffer();
1389   DALI_TEST_CHECK((int)testImageBuffer.GetWidth() == 2 && (int)testImageBuffer.GetHeight() == 2);
1390
1391   // async...
1392   bool result = view.CreateHitTestAsynchronously(100, 100, Dali::WebEngineHitTest::HitTestMode::DEFAULT, &OnHitTestCreated);
1393   DALI_TEST_CHECK(result);
1394   Test::EmitGlobalTimerSignal();
1395   DALI_TEST_EQUALS( gHitTestCreatedCallbackCalled, 1, TEST_LOCATION );
1396
1397   END_TEST;
1398 }
1399
1400 int UtcDaliWebViewEvaluteJavaScript(void)
1401 {
1402   ToolkitTestApplication application;
1403
1404   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1405
1406   view.LoadHtmlString( "<body>Hello World!</body>" );
1407   view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
1408   view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript );
1409   Test::EmitGlobalTimerSignal();
1410
1411   DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION );
1412
1413   END_TEST;
1414 }
1415
1416 int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void)
1417 {
1418   ToolkitTestApplication application;
1419
1420   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1421
1422   view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert );
1423   view.LoadHtmlString( "<head><script type='text/javascript'>alert('this is an alert popup.');</script></head><body>Hello World!</body>" );
1424   view.JavaScriptAlertReply();
1425   Test::EmitGlobalTimerSignal();
1426   DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION );
1427
1428   view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm );
1429   view.LoadHtmlString( "<head><script type='text/javascript'>confirm('this is a confirm popup.');</script></head><body>Hello World!</body>" );
1430   view.JavaScriptConfirmReply( true );
1431   Test::EmitGlobalTimerSignal();
1432   DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION );
1433
1434   view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt );
1435   view.LoadHtmlString( "<head><script type='text/javascript'>prompt('this is a prompt popup.');</script></head><body>Hello World!</body>" );
1436   view.JavaScriptPromptReply( "it is a prompt." );
1437   Test::EmitGlobalTimerSignal();
1438   DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION );
1439
1440   END_TEST;
1441 }
1442
1443 int UtcDaliWebViewLoadHtmlStringOverrideCurrentEntryAndContents(void)
1444 {
1445   ToolkitTestApplication application;
1446
1447   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1448   DALI_TEST_CHECK( view );
1449
1450   std::string html("<body>Hello World!</body>");
1451   std::string basicUri("http://basicurl");
1452   std::string unreachableUrl("http://unreachableurl");
1453   bool result = view.LoadHtmlStringOverrideCurrentEntry( html, basicUri, unreachableUrl );
1454   DALI_TEST_CHECK( result );
1455
1456   application.SendNotification();
1457   application.Render();
1458   Test::EmitGlobalTimerSignal();
1459
1460   result = view.LoadContents( html, html.length(), "html/text", "utf-8", basicUri );
1461   DALI_TEST_CHECK( result );
1462
1463   END_TEST;
1464 }
1465
1466 int UtcDaliWebViewReloadSuspendResumeNetworkLoadingCustomHeader(void)
1467 {
1468   ToolkitTestApplication application;
1469
1470   WebView view = WebView::New();
1471   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
1472   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
1473   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
1474   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
1475
1476   application.GetScene().Add( view );
1477   application.SendNotification();
1478   application.Render();
1479   DALI_TEST_CHECK( view );
1480
1481   view.LoadUrl( "http://test.html" );
1482   bool result = view.AddCustomHeader("key", "value");
1483   DALI_TEST_CHECK( result );
1484
1485   result = view.ReloadWithoutCache();
1486   DALI_TEST_CHECK( result );
1487
1488   uint32_t portNumber = view.StartInspectorServer(5000);
1489   DALI_TEST_EQUALS( portNumber, 5000, TEST_LOCATION );
1490
1491   application.SendNotification();
1492   application.Render();
1493   Test::EmitGlobalTimerSignal();
1494
1495   result = view.StopInspectorServer();
1496   DALI_TEST_CHECK( result );
1497
1498   view.SuspendNetworkLoading();
1499
1500   result = view.RemoveCustomHeader("key");
1501   DALI_TEST_CHECK( result );
1502
1503   view.ResumeNetworkLoading();
1504
1505   END_TEST;
1506 }
1507
1508 int UtcDaliWebViewMethodsForCoverage(void)
1509 {
1510   ToolkitTestApplication application;
1511
1512   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
1513
1514   view.LoadHtmlString( "<body>Hello World!</body>" );
1515   view.AddJavaScriptMessageHandler( "jsObject",
1516     []( const std::string& arg ) {
1517     }
1518   );
1519
1520   DALI_TEST_CHECK( view );
1521
1522   END_TEST;
1523 }
1524
1525 // test cases for web backforward list.
1526
1527 int UtcDaliWebBackForwardListCheckItem(void)
1528 {
1529   ToolkitTestApplication application;
1530
1531   WebView view = WebView::New();
1532   DALI_TEST_CHECK( view );
1533
1534   Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
1535   DALI_TEST_CHECK( bfList != 0 )
1536
1537   unsigned int itemCount = bfList->GetItemCount();
1538   DALI_TEST_CHECK( itemCount == 1 )
1539
1540   std::unique_ptr<Dali::WebEngineBackForwardListItem> citem = bfList->GetCurrentItem();
1541   DALI_TEST_CHECK( citem != 0 );
1542
1543   std::unique_ptr<Dali::WebEngineBackForwardListItem> citemP = bfList->GetPreviousItem();
1544   DALI_TEST_CHECK( citemP != 0 );
1545
1546   std::unique_ptr<Dali::WebEngineBackForwardListItem> citemN = bfList->GetNextItem();
1547   DALI_TEST_CHECK( citemN != 0 );
1548
1549   const std::string kDefaultUrl( "http://url" );
1550   std::string testValue = citem->GetUrl();
1551   DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION );
1552
1553   const std::string kDefaultTitle( "title" );
1554   testValue = citem->GetTitle();
1555   DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION );
1556
1557   const std::string kDefaultOriginalUrl( "http://originalurl" );
1558   testValue = citem->GetOriginalUrl();
1559   DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION );
1560
1561   std::unique_ptr<Dali::WebEngineBackForwardListItem> item = bfList->GetItemAtIndex( 0 );
1562   DALI_TEST_CHECK( item != 0 );
1563
1564   std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vecBack = bfList->GetBackwardItems(-1);
1565   DALI_TEST_CHECK( vecBack.size() == 1 );
1566
1567   std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vecForward = bfList->GetForwardItems(-1);
1568   DALI_TEST_CHECK( vecForward.size() == 1 );
1569
1570   END_TEST;
1571 }
1572
1573 // test cases for web context.
1574
1575 int UtcDaliWebContextGetSetCacheModel(void)
1576 {
1577   ToolkitTestApplication application;
1578
1579   WebView view = WebView::New();
1580   DALI_TEST_CHECK( view );
1581
1582   Dali::Toolkit::WebContext* context = view.GetContext();
1583   DALI_TEST_CHECK( context != 0 )
1584
1585   std::string kDefaultValue;
1586
1587   // Reset something
1588   context->SetProxyUri( kDefaultValue );
1589   context->SetCertificateFilePath( kDefaultValue );
1590   context->EnableCache( true );
1591   context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
1592   context->DeleteAllWebDatabase();
1593   context->DeleteAllWebStorage();
1594   context->DeleteLocalFileSystem();
1595   context->ClearCache();
1596   context->SetContextAppId( "id" );
1597   context->SetContextApplicationType( Dali::WebEngineContext::ApplicationType::OTHER );
1598   context->SetContextTimeOffset( 0 );
1599   context->SetContextTimeZoneOffset( 0, 0 );
1600   context->SetDefaultZoomFactor( 0 );
1601   context->DeleteAllFormPasswordData();
1602   context->DeleteAllFormCandidateData();
1603
1604   // Check default value
1605   Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
1606   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
1607
1608   // Check Set/GetProperty
1609   context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1610   value = context->GetCacheModel();
1611   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
1612
1613   // Get cache enabled
1614   DALI_TEST_CHECK( context->IsCacheEnabled() );
1615
1616   // Get certificate
1617   std::string str = context->GetContextCertificateFile();
1618   DALI_TEST_EQUALS( str, "test", TEST_LOCATION );
1619
1620   // Set version
1621   DALI_TEST_CHECK( context->SetContextAppVersion( "test" ) );
1622
1623   // Register
1624   std::vector<std::string> temp;
1625   context->RegisterUrlSchemesAsCorsEnabled( temp );
1626   context->RegisterJsPluginMimeTypes( temp );
1627   context->DeleteFormPasswordDataList( temp );
1628
1629   // Get zoom
1630   DALI_TEST_EQUALS( context->GetContextDefaultZoomFactor(), float( 0 ), TEST_LOCATION );
1631
1632   // Delete cache and database
1633   DALI_TEST_CHECK( context->DeleteAllApplicationCache() );
1634   DALI_TEST_CHECK( context->DeleteAllWebIndexedDatabase() );
1635
1636   // Get contextProxy
1637   context->SetContextProxy("", "");
1638   DALI_TEST_EQUALS( context->GetContextProxy(), "test", TEST_LOCATION );
1639   DALI_TEST_EQUALS( context->GetProxyBypassRule(), "test", TEST_LOCATION );
1640
1641   //Notify low memory
1642   DALI_TEST_CHECK( context->FreeUnusedMemory() );
1643
1644   END_TEST;
1645 }
1646
1647 int UtcDaliWebContextGetWebDatabaseStorageOrigins(void)
1648 {
1649   ToolkitTestApplication application;
1650
1651   WebView view = WebView::New();
1652   DALI_TEST_CHECK( view );
1653
1654   Dali::Toolkit::WebContext* context = view.GetContext();
1655   DALI_TEST_CHECK( context != 0 )
1656
1657   std::string kDefaultValue;
1658
1659   // get origins of web database
1660   bool result = context->GetWebDatabaseOrigins(&OnSecurityOriginsAcquired);
1661   DALI_TEST_CHECK( result );
1662
1663   Test::EmitGlobalTimerSignal();
1664   DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 1, TEST_LOCATION );
1665   DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1666
1667   Dali::WebEngineSecurityOrigin* origin = gSecurityOriginList[0].get();
1668   DALI_TEST_CHECK( origin );
1669
1670   result = context->DeleteWebDatabase(*origin);
1671   DALI_TEST_CHECK( result );
1672
1673   // get origins of web storage
1674   result = context->GetWebStorageOrigins(&OnSecurityOriginsAcquired);
1675   DALI_TEST_CHECK( result );
1676
1677   Test::EmitGlobalTimerSignal();
1678   DALI_TEST_EQUALS( gSecurityOriginsAcquiredCallbackCalled, 2, TEST_LOCATION );
1679   DALI_TEST_CHECK(gSecurityOriginList.size() == 1);
1680
1681   origin = gSecurityOriginList[0].get();
1682   DALI_TEST_CHECK( origin );
1683
1684   result = context->GetWebStorageUsageForOrigin(*origin, &OnStorageUsageAcquired);
1685   DALI_TEST_CHECK( result );
1686   Test::EmitGlobalTimerSignal();
1687   DALI_TEST_EQUALS( gStorageUsageAcquiredCallbackCalled, 1, TEST_LOCATION );
1688
1689   result = context->DeleteWebStorage(*origin);
1690   DALI_TEST_CHECK( result );
1691
1692   result = context->DeleteApplicationCache(*origin);
1693   DALI_TEST_CHECK( result );
1694
1695   // form passwords, download state, mime type.
1696   context->GetFormPasswordList(&OnFormPasswordsAcquired);
1697   Test::EmitGlobalTimerSignal();
1698   DALI_TEST_EQUALS(gFormPasswordsAcquiredCallbackCalled, 1, TEST_LOCATION);
1699   DALI_TEST_CHECK(gPasswordDataList.size() == 1);
1700   DALI_TEST_EQUALS(gPasswordDataList[0]->url, "http://test.html", TEST_LOCATION);
1701   DALI_TEST_CHECK(gPasswordDataList[0]->useFingerprint == false);
1702
1703   context->RegisterDownloadStartedCallback(&OnDownloadStarted);
1704   Test::EmitGlobalTimerSignal();
1705   DALI_TEST_EQUALS(gDownloadStartedCallbackCalled, 1, TEST_LOCATION);
1706
1707   context->RegisterMimeOverriddenCallback(&OnMimeOverridden);
1708   Test::EmitGlobalTimerSignal();
1709   DALI_TEST_EQUALS(gMimeOverriddenCallbackCalled, 1, TEST_LOCATION);
1710
1711   gSecurityOriginList.clear();
1712   gPasswordDataList.clear();
1713
1714   END_TEST;
1715 }
1716
1717 // test cases for web cookie manager.
1718
1719 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
1720 {
1721   ToolkitTestApplication application;
1722
1723   WebView view = WebView::New();
1724   DALI_TEST_CHECK( view );
1725
1726   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1727   DALI_TEST_CHECK( cookieManager != 0 )
1728
1729   const std::string kDefaultValue;
1730
1731   // Reset something
1732   cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
1733   cookieManager->ClearCookies();
1734
1735   // Check default value
1736   Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
1737   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
1738
1739   // Check Set/GetProperty
1740   cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1741   value = cookieManager->GetCookieAcceptPolicy();
1742   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
1743
1744   END_TEST;
1745 }
1746
1747 int UtcDaliWebCookieManagerChangesWatch(void)
1748 {
1749   ToolkitTestApplication application;
1750
1751   WebView view = WebView::New();
1752   DALI_TEST_CHECK( view );
1753
1754   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
1755   DALI_TEST_CHECK( cookieManager != 0 )
1756
1757   cookieManager->ChangesWatch(&OnChangesWatch);
1758   Test::EmitGlobalTimerSignal();
1759   DALI_TEST_EQUALS( gCookieManagerChangsWatchCallbackCalled, 1, TEST_LOCATION );
1760
1761   END_TEST;
1762 }
1763
1764 // test cases for web settings.
1765
1766 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
1767 {
1768   ToolkitTestApplication application;
1769
1770   WebView view = WebView::New();
1771   DALI_TEST_CHECK( view );
1772
1773   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1774   DALI_TEST_CHECK( settings != 0 )
1775
1776   // Reset something
1777   settings->AllowMixedContents( false );
1778   settings->EnableSpatialNavigation( false );
1779   settings->EnableWebSecurity( false );
1780   settings->EnableCacheBuilder( false );
1781   settings->EnableDoNotTrack( false );
1782   settings->UseScrollbarThumbFocusNotifications( false );
1783   settings->AllowFileAccessFromExternalUrl( false );
1784   settings->AllowScriptsOpenWindows( false );
1785
1786   // Check default value
1787   int value = settings->GetDefaultFontSize();
1788   DALI_TEST_CHECK( value == 16 );
1789
1790   // Check Set/GetProperty
1791   settings->SetDefaultFontSize( 20 );
1792   value = settings->GetDefaultFontSize();
1793   DALI_TEST_CHECK( value == 20 );
1794
1795   END_TEST;
1796 }
1797
1798 int UtcDaliWebSettingsCheckEnableJavaScript(void)
1799 {
1800   ToolkitTestApplication application;
1801
1802   WebView view = WebView::New();
1803   DALI_TEST_CHECK( view );
1804
1805   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1806   DALI_TEST_CHECK( settings != 0 )
1807
1808   // Reset something
1809   settings->AllowMixedContents( false );
1810   settings->EnableSpatialNavigation( false );
1811   settings->EnableWebSecurity( false );
1812   settings->EnableCacheBuilder( false );
1813   settings->EnableDoNotTrack( false );
1814   settings->UseScrollbarThumbFocusNotifications( false );
1815   settings->AllowFileAccessFromExternalUrl( false );
1816   settings->AllowScriptsOpenWindows( false );
1817
1818   // Check default value is true or not
1819   bool value = settings->IsJavaScriptEnabled();
1820   DALI_TEST_CHECK( value );
1821
1822   // Check Set/GetProperty
1823   settings->EnableJavaScript( false );
1824   value = settings->IsJavaScriptEnabled();
1825   DALI_TEST_CHECK( !value );
1826
1827   END_TEST;
1828 }
1829
1830 int UtcDaliWebSettingsCheckEnableAutoFitting(void)
1831 {
1832   ToolkitTestApplication application;
1833
1834   WebView view = WebView::New();
1835   DALI_TEST_CHECK( view );
1836
1837   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1838   DALI_TEST_CHECK( settings != 0 )
1839
1840   // Reset something
1841   settings->AllowMixedContents( false );
1842   settings->EnableSpatialNavigation( false );
1843   settings->EnableWebSecurity( false );
1844   settings->EnableCacheBuilder( false );
1845   settings->EnableDoNotTrack( false );
1846   settings->UseScrollbarThumbFocusNotifications( false );
1847   settings->AllowFileAccessFromExternalUrl( false );
1848   settings->AllowScriptsOpenWindows( false );
1849
1850   // Check default value is true or not
1851   bool value = settings->IsAutoFittingEnabled();
1852   DALI_TEST_CHECK( value );
1853
1854   // Check Set/GetProperty
1855   settings->EnableAutoFitting( false );
1856   value = settings->IsAutoFittingEnabled();
1857   DALI_TEST_CHECK( !value );
1858
1859   END_TEST;
1860 }
1861
1862 int UtcDaliWebSettingsCheckEnablePlugins(void)
1863 {
1864   ToolkitTestApplication application;
1865
1866   WebView view = WebView::New();
1867   DALI_TEST_CHECK( view );
1868
1869   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1870   DALI_TEST_CHECK( settings != 0 )
1871
1872   // Reset something
1873   settings->AllowMixedContents( false );
1874   settings->EnableSpatialNavigation( false );
1875   settings->EnableWebSecurity( false );
1876   settings->EnableCacheBuilder( false );
1877   settings->EnableDoNotTrack( false );
1878   settings->UseScrollbarThumbFocusNotifications( false );
1879   settings->AllowFileAccessFromExternalUrl( false );
1880   settings->AllowScriptsOpenWindows( false );
1881
1882   // Check default value is true or not
1883   bool value = settings->ArePluginsEnabled();
1884   DALI_TEST_CHECK( value );
1885
1886   // Check Set/GetProperty
1887   settings->EnablePlugins( false );
1888   value = settings->ArePluginsEnabled();
1889   DALI_TEST_CHECK( !value );
1890
1891   END_TEST;
1892 }
1893
1894 int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void)
1895 {
1896   ToolkitTestApplication application;
1897
1898   WebView view = WebView::New();
1899   DALI_TEST_CHECK( view );
1900
1901   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1902   DALI_TEST_CHECK( settings != 0 )
1903
1904   // Reset something
1905   settings->AllowMixedContents( false );
1906   settings->EnableSpatialNavigation( false );
1907   settings->EnableWebSecurity( false );
1908   settings->EnableCacheBuilder( false );
1909   settings->EnableDoNotTrack( false );
1910   settings->UseScrollbarThumbFocusNotifications( false );
1911   settings->AllowFileAccessFromExternalUrl( false );
1912   settings->AllowScriptsOpenWindows( false );
1913
1914   // Check default value is true or not
1915   bool value = settings->IsPrivateBrowsingEnabled();
1916   DALI_TEST_CHECK( value );
1917
1918   // Check Set/GetProperty
1919   settings->EnablePrivateBrowsing( false );
1920   value = settings->IsPrivateBrowsingEnabled();
1921   DALI_TEST_CHECK( !value );
1922
1923   END_TEST;
1924 }
1925
1926 int UtcDaliWebSettingsCheckEnableLinkMagnifier(void)
1927 {
1928   ToolkitTestApplication application;
1929
1930   WebView view = WebView::New();
1931   DALI_TEST_CHECK( view );
1932
1933   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1934   DALI_TEST_CHECK( settings != 0 )
1935
1936   // Reset something
1937   settings->AllowMixedContents( false );
1938   settings->EnableSpatialNavigation( false );
1939   settings->EnableWebSecurity( false );
1940   settings->EnableCacheBuilder( false );
1941   settings->EnableDoNotTrack( false );
1942   settings->UseScrollbarThumbFocusNotifications( false );
1943   settings->AllowFileAccessFromExternalUrl( false );
1944   settings->AllowScriptsOpenWindows( false );
1945
1946   // Check default value is true or not
1947   bool value = settings->IsLinkMagnifierEnabled();
1948   DALI_TEST_CHECK( value );
1949
1950   // Check Set/GetProperty
1951   settings->EnableLinkMagnifier( false );
1952   value = settings->IsLinkMagnifierEnabled();
1953   DALI_TEST_CHECK( !value );
1954
1955   END_TEST;
1956 }
1957
1958 int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void)
1959 {
1960   ToolkitTestApplication application;
1961
1962   WebView view = WebView::New();
1963   DALI_TEST_CHECK( view );
1964
1965   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1966   DALI_TEST_CHECK( settings != 0 )
1967
1968   // Reset something
1969   settings->AllowMixedContents( false );
1970   settings->EnableSpatialNavigation( false );
1971   settings->EnableWebSecurity( false );
1972   settings->EnableCacheBuilder( false );
1973   settings->EnableDoNotTrack( false );
1974   settings->UseScrollbarThumbFocusNotifications( false );
1975   settings->AllowFileAccessFromExternalUrl( false );
1976   settings->AllowScriptsOpenWindows( false );
1977
1978   // Check default value is true or not
1979   bool value = settings->IsKeypadWithoutUserActionUsed();
1980   DALI_TEST_CHECK( value );
1981
1982   // Check Set/GetProperty
1983   settings->UseKeypadWithoutUserAction( false );
1984   value = settings->IsKeypadWithoutUserActionUsed();
1985   DALI_TEST_CHECK( !value );
1986
1987   END_TEST;
1988 }
1989
1990 int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void)
1991 {
1992   ToolkitTestApplication application;
1993
1994   WebView view = WebView::New();
1995   DALI_TEST_CHECK( view );
1996
1997   Dali::Toolkit::WebSettings* settings = view.GetSettings();
1998   DALI_TEST_CHECK( settings != 0 )
1999
2000   // Reset something
2001   settings->AllowMixedContents( false );
2002   settings->EnableSpatialNavigation( false );
2003   settings->EnableWebSecurity( false );
2004   settings->EnableCacheBuilder( false );
2005   settings->EnableDoNotTrack( false );
2006   settings->UseScrollbarThumbFocusNotifications( false );
2007   settings->AllowFileAccessFromExternalUrl( false );
2008   settings->AllowScriptsOpenWindows( false );
2009
2010   // Check default value is true or not
2011   bool value = settings->IsAutofillPasswordFormEnabled();
2012   DALI_TEST_CHECK( value );
2013   settings->EnableAutofillPasswordForm( false );
2014   value = settings->IsAutofillPasswordFormEnabled();
2015   DALI_TEST_CHECK( !value );
2016   END_TEST;
2017 }
2018
2019 int UtcDaliWebSettingsCheckEnableFormCandidateData(void)
2020 {
2021   ToolkitTestApplication application;
2022
2023   WebView view = WebView::New();
2024   DALI_TEST_CHECK( view );
2025
2026   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2027   DALI_TEST_CHECK( settings != 0 );
2028
2029   // Reset something
2030   settings->AllowMixedContents( false );
2031   settings->EnableSpatialNavigation( false );
2032   settings->EnableWebSecurity( false );
2033   settings->EnableCacheBuilder( false );
2034   settings->EnableDoNotTrack( false );
2035   settings->UseScrollbarThumbFocusNotifications( false );
2036   settings->AllowFileAccessFromExternalUrl( false );
2037   settings->AllowScriptsOpenWindows( false );
2038
2039   // Check default value is true or not
2040   bool value = settings->IsFormCandidateDataEnabled();
2041   DALI_TEST_CHECK( value );
2042
2043   // Check Set/GetProperty
2044   settings->EnableFormCandidateData( false );
2045   value = settings->IsFormCandidateDataEnabled();
2046   DALI_TEST_CHECK( !value );
2047
2048   END_TEST;
2049 }
2050
2051 int UtcDaliWebSettingsCheckEnableTextSelection(void)
2052 {
2053   ToolkitTestApplication application;
2054
2055   WebView view = WebView::New();
2056   DALI_TEST_CHECK( view );
2057
2058   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2059   DALI_TEST_CHECK( settings != 0 );
2060
2061   // Reset something
2062   settings->AllowMixedContents( false );
2063   settings->EnableSpatialNavigation( false );
2064   settings->EnableWebSecurity( false );
2065   settings->EnableCacheBuilder( false );
2066   settings->EnableDoNotTrack( false );
2067   settings->UseScrollbarThumbFocusNotifications( false );
2068   settings->AllowFileAccessFromExternalUrl( false );
2069   settings->AllowScriptsOpenWindows( false );
2070
2071   // Check default value is true or not
2072   bool value = settings->IsTextSelectionEnabled();
2073   DALI_TEST_CHECK( value );
2074
2075   //Check Set/GetProperty
2076   settings->EnableTextSelection(false);
2077   value = settings->IsTextSelectionEnabled();
2078   DALI_TEST_CHECK( !value );
2079
2080   END_TEST;
2081 }
2082
2083 int UtcDaliWebSettingsCheckEnableTextAutosizing(void)
2084 {
2085   ToolkitTestApplication application;
2086
2087   WebView view = WebView::New();
2088   DALI_TEST_CHECK( view );
2089
2090   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2091   DALI_TEST_CHECK( settings != 0 );
2092
2093   // Reset something
2094   settings->AllowMixedContents( false );
2095   settings->EnableSpatialNavigation( false );
2096   settings->EnableWebSecurity( false );
2097   settings->EnableCacheBuilder( false );
2098   settings->EnableDoNotTrack( false );
2099   settings->UseScrollbarThumbFocusNotifications( false );
2100   settings->AllowFileAccessFromExternalUrl( false );
2101   settings->AllowScriptsOpenWindows( false );
2102
2103   // Check default value is true or not
2104   bool value = settings->IsTextAutosizingEnabled();
2105   DALI_TEST_CHECK( value );
2106
2107   // Check Set/GetProperty
2108   settings->EnableTextAutosizing(false);
2109   value = settings->IsTextAutosizingEnabled();
2110   DALI_TEST_CHECK( !value );
2111
2112   END_TEST;
2113 }
2114
2115 int UtcDaliWebSettingsCheckEnableArrowScroll(void)
2116 {
2117   ToolkitTestApplication application;
2118
2119   WebView view = WebView::New();
2120   DALI_TEST_CHECK( view );
2121
2122   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2123   DALI_TEST_CHECK( settings != 0 );
2124
2125   // Reset something
2126   settings->AllowMixedContents( false );
2127   settings->EnableSpatialNavigation( false );
2128   settings->EnableWebSecurity( false );
2129   settings->EnableCacheBuilder( false );
2130   settings->EnableDoNotTrack( false );
2131   settings->UseScrollbarThumbFocusNotifications( false );
2132   settings->AllowFileAccessFromExternalUrl( false );
2133   settings->AllowScriptsOpenWindows( false );
2134
2135   // Check default value is true or not
2136   bool value = settings->IsArrowScrollEnabled();
2137   DALI_TEST_CHECK( value );
2138
2139   // Check Set/GetProperty
2140   settings->EnableArrowScroll(false);
2141   value = settings->IsArrowScrollEnabled();
2142   DALI_TEST_CHECK( !value );
2143
2144   END_TEST;
2145 }
2146
2147 int UtcDaliWebSettingsCheckEnableClipboard(void)
2148 {
2149   ToolkitTestApplication application;
2150
2151   WebView view = WebView::New();
2152   DALI_TEST_CHECK( view );
2153
2154   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2155   DALI_TEST_CHECK( settings != 0 );
2156
2157   // Reset something
2158   settings->AllowMixedContents( false );
2159   settings->EnableSpatialNavigation( false );
2160   settings->EnableWebSecurity( false );
2161   settings->EnableCacheBuilder( false );
2162   settings->EnableDoNotTrack( false );
2163   settings->UseScrollbarThumbFocusNotifications( false );
2164   settings->AllowFileAccessFromExternalUrl( false );
2165   settings->AllowScriptsOpenWindows( false );
2166
2167   // Check default value is true or not
2168   bool value = settings->IsClipboardEnabled();
2169   DALI_TEST_CHECK( value );
2170   settings->EnableClipboard(false);
2171   value = settings->IsClipboardEnabled();
2172   DALI_TEST_CHECK( !value );
2173   END_TEST;
2174 }
2175
2176 int UtcDaliWebSettingsCheckEnableImePanel(void)
2177 {
2178   ToolkitTestApplication application;
2179
2180   WebView view = WebView::New();
2181   DALI_TEST_CHECK( view );
2182
2183   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2184   DALI_TEST_CHECK( settings != 0 );
2185
2186   // Reset something
2187   settings->AllowMixedContents( false );
2188   settings->EnableSpatialNavigation( false );
2189   settings->EnableWebSecurity( false );
2190   settings->EnableCacheBuilder( false );
2191   settings->EnableDoNotTrack( false );
2192   settings->UseScrollbarThumbFocusNotifications( false );
2193   settings->AllowFileAccessFromExternalUrl( false );
2194   settings->AllowScriptsOpenWindows( false );
2195
2196   // Check default value is true or not
2197   bool value = settings->IsImePanelEnabled();
2198   DALI_TEST_CHECK( value );
2199
2200   // Check Set/GetProperty
2201   settings->EnableImePanel(false);
2202   value = settings->IsImePanelEnabled();
2203   DALI_TEST_CHECK( !value );
2204
2205   END_TEST;
2206 }
2207
2208 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
2209 {
2210   ToolkitTestApplication application;
2211
2212   WebView view = WebView::New();
2213   DALI_TEST_CHECK( view );
2214
2215   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2216   DALI_TEST_CHECK( settings != 0 )
2217
2218   // Reset something
2219   settings->AllowMixedContents( false );
2220   settings->EnableSpatialNavigation( false );
2221   settings->EnableWebSecurity( false );
2222   settings->EnableCacheBuilder( false );
2223   settings->EnableDoNotTrack( false );
2224   settings->UseScrollbarThumbFocusNotifications( false );
2225   settings->AllowFileAccessFromExternalUrl( false );
2226   settings->AllowScriptsOpenWindows( false );
2227
2228   // Check default value is true or not
2229   bool value = settings->AreImagesLoadedAutomatically();
2230   DALI_TEST_CHECK( value );
2231
2232   // Check Set/GetProperty
2233   settings->AllowImagesLoadAutomatically( false );
2234   value = settings->AreImagesLoadedAutomatically();
2235   DALI_TEST_CHECK( !value );
2236
2237   END_TEST;
2238 }
2239
2240 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
2241 {
2242   ToolkitTestApplication application;
2243
2244   WebView view = WebView::New();
2245   DALI_TEST_CHECK( view );
2246
2247   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2248   DALI_TEST_CHECK( settings != 0 )
2249
2250   const std::string kDefaultValue;
2251   const std::string kTestValue = "UTF-8";
2252
2253   // Reset something
2254   settings->AllowMixedContents( false );
2255   settings->EnableSpatialNavigation( false );
2256   settings->EnableWebSecurity( false );
2257   settings->EnableCacheBuilder( false );
2258   settings->EnableDoNotTrack( false );
2259   settings->UseScrollbarThumbFocusNotifications( false );
2260   settings->AllowFileAccessFromExternalUrl( false );
2261   settings->AllowScriptsOpenWindows( false );
2262
2263   // Check default value
2264   std::string value = settings->GetDefaultTextEncodingName();
2265   DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
2266
2267   // Check Set/GetProperty
2268   settings->SetDefaultTextEncodingName( kTestValue );
2269   value = settings->GetDefaultTextEncodingName();
2270   DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );
2271
2272   END_TEST;
2273 }
2274
2275 int UtcDaliWebSettingsSetViewportMetaTag(void)
2276 {
2277   ToolkitTestApplication application;
2278
2279   WebView view = WebView::New();
2280   DALI_TEST_CHECK( view );
2281
2282   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2283   DALI_TEST_CHECK( settings != 0 )
2284
2285   // Check the value is true or not
2286   bool value = settings->SetViewportMetaTag(true);
2287   DALI_TEST_CHECK( value );
2288
2289   END_TEST;
2290 }
2291
2292 int UtcDaliWebSettingsSetForceZoom(void)
2293 {
2294   ToolkitTestApplication application;
2295
2296   WebView view = WebView::New();
2297   DALI_TEST_CHECK( view );
2298
2299   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2300   DALI_TEST_CHECK( settings != 0 )
2301
2302   // Check the value is true or not
2303   bool value = settings->SetForceZoom(true);
2304   DALI_TEST_CHECK( value );
2305
2306   value = settings->IsZoomForced();
2307   DALI_TEST_CHECK( value );
2308
2309   END_TEST;
2310 }
2311
2312 int UtcDaliWebSettingsSetTextZoomEnabled(void)
2313 {
2314   ToolkitTestApplication application;
2315
2316   WebView view = WebView::New();
2317   DALI_TEST_CHECK( view );
2318
2319   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2320   DALI_TEST_CHECK( settings != 0 )
2321
2322   // Check the value is true or not
2323   bool value = settings->SetTextZoomEnabled(true);
2324   DALI_TEST_CHECK( value );
2325
2326   value = settings->IsTextZoomEnabled();
2327   DALI_TEST_CHECK( value );
2328
2329   END_TEST;
2330 }
2331
2332 int UtcDaliWebSettingsSetExtraFeature(void)
2333 {
2334   ToolkitTestApplication application;
2335
2336   WebView view = WebView::New();
2337   DALI_TEST_CHECK( view );
2338
2339   Dali::Toolkit::WebSettings* settings = view.GetSettings();
2340   DALI_TEST_CHECK( settings != 0 )
2341
2342   // Check the value is true or not
2343   settings->SetExtraFeature("test", true);
2344   bool value = settings->IsExtraFeatureEnabled("test");
2345   DALI_TEST_CHECK( value );
2346
2347   END_TEST;
2348 }
2349