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