Merge "Fixed scroll issue when use padding of TextField/TextEditor" into devel/master
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / utc-Dali-WebView.cpp
1 /*
2  * Copyright (c) 2020 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/integration-api/events/key-event-integ.h>
26 #include <dali/integration-api/events/touch-event-integ.h>
27 #include <dali/public-api/images/pixel-data.h>
28 #include <dali-toolkit/public-api/controls/image-view/image-view.h>
29 #include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
30 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list.h>
31 #include <dali-toolkit/devel-api/controls/web-view/web-back-forward-list-item.h>
32 #include <dali-toolkit/devel-api/controls/web-view/web-context.h>
33 #include <dali-toolkit/devel-api/controls/web-view/web-cookie-manager.h>
34 #include <dali-toolkit/devel-api/controls/web-view/web-settings.h>
35 #include <dali-toolkit/devel-api/controls/web-view/web-view.h>
36
37 using namespace Dali;
38 using namespace Toolkit;
39
40 namespace
41 {
42
43 const char* const TEST_URL1( "http://www.somewhere.valid1.com" );
44 const char* const TEST_URL2( "http://www.somewhere.valid2.com" );
45
46 static int gPageLoadStartedCallbackCalled = 0;
47 static int gPageLoadInProgressCallbackCalled = 0;
48 static int gPageLoadFinishedCallbackCalled = 0;
49 static int gScrollEdgeReachedCallbackCalled = 0;
50 static int gUrlChangedCallbackCalled = 0;
51 static int gEvaluateJavaScriptCallbackCalled = 0;
52 static int gJavaScriptAlertCallbackCalled = 0;
53 static int gJavaScriptConfirmCallbackCalled = 0;
54 static int gJavaScriptPromptCallbackCalled = 0;
55 static bool gTouched = false;
56
57 struct CallbackFunctor
58 {
59   CallbackFunctor(bool* callbackFlag)
60   : mCallbackFlag( callbackFlag )
61   {
62   }
63
64   void operator()()
65   {
66     *mCallbackFlag = true;
67   }
68   bool* mCallbackFlag;
69 };
70
71 static void OnPageLoadStarted( WebView view, const std::string& url )
72 {
73   gPageLoadStartedCallbackCalled++;
74 }
75
76 static void OnPageLoadInProgress( WebView view, const std::string& url )
77 {
78   gPageLoadInProgressCallbackCalled++;
79 }
80
81 static void OnPageLoadFinished( WebView view, const std::string& url )
82 {
83   gPageLoadFinishedCallbackCalled++;
84 }
85
86 static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge edge )
87 {
88   gScrollEdgeReachedCallbackCalled++;
89 }
90
91 static void OnUrlChanged( WebView view, const std::string& url )
92 {
93   gUrlChangedCallbackCalled++;
94 }
95
96 static void OnPageLoadError( WebView view, const std::string& url, WebView::LoadErrorCode errorCode )
97 {
98 }
99
100 static void OnEvaluateJavaScript( const std::string& result )
101 {
102   gEvaluateJavaScriptCallbackCalled++;
103 }
104
105 static bool OnJavaScriptAlert( const std::string& result )
106 {
107   gJavaScriptAlertCallbackCalled++;
108   return true;
109 }
110
111 static bool OnJavaScriptConfirm( const std::string& result )
112 {
113   gJavaScriptConfirmCallbackCalled++;
114   return true;
115 }
116
117 static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& message2 )
118 {
119   gJavaScriptPromptCallbackCalled++;
120   return true;
121 }
122
123 static bool OnTouched( Actor actor, const Dali::TouchEvent& touch )
124 {
125   gTouched = true;
126   return true;
127 }
128
129 } // namespace
130
131 void web_view_startup(void)
132 {
133   test_return_value = TET_UNDEF;
134 }
135
136 void web_view_cleanup(void)
137 {
138   test_return_value = TET_PASS;
139 }
140
141 int UtcDaliWebViewBasics(void)
142 {
143   ToolkitTestApplication application;
144
145   // Copy and Assignment Test
146   tet_infoline( "UtcDaliWebViewBasic Copy and Assignment Test" );
147   WebView view = WebView::New();
148   DALI_TEST_CHECK( view );
149
150   WebView copy( view );
151   DALI_TEST_CHECK( view == copy );
152
153   WebView assign;
154   DALI_TEST_CHECK( !assign );
155
156   assign = copy;
157   DALI_TEST_CHECK( assign == view );
158
159
160   // DownCast Test
161   tet_infoline( "UtcDaliWebViewBasic DownCast Test" );
162   BaseHandle handle(view);
163
164   WebView view2 = WebView::DownCast( handle );
165   DALI_TEST_CHECK( view );
166   DALI_TEST_CHECK( view2 );
167   DALI_TEST_CHECK( view == view2 );
168
169
170   // TypeRegistry Test
171   tet_infoline( "UtcDaliWebViewBasic TypeRegistry Test" );
172   TypeRegistry typeRegistry = TypeRegistry::Get();
173   DALI_TEST_CHECK( typeRegistry );
174
175   TypeInfo typeInfo = typeRegistry.GetTypeInfo( "WebView" );
176   DALI_TEST_CHECK( typeInfo );
177
178   BaseHandle handle2 = typeInfo.CreateInstance();
179   DALI_TEST_CHECK( handle2 );
180
181   WebView view3 = WebView::DownCast( handle2 );
182   DALI_TEST_CHECK( view3 );
183
184   END_TEST;
185 }
186
187 int UtcDaliWebViewPageNavigation(void)
188 {
189   ToolkitTestApplication application;
190
191   WebView view = WebView::New();
192   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
193   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
194   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
195   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
196   application.GetScene().Add( view );
197   application.SendNotification();
198   application.Render();
199   DALI_TEST_CHECK( view );
200
201   ConnectionTracker* testTracker = new ConnectionTracker();
202   view.PageLoadStartedSignal().Connect( &OnPageLoadStarted );
203   view.PageLoadInProgressSignal().Connect( &OnPageLoadInProgress );
204   view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished );
205   view.PageLoadErrorSignal().Connect( &OnPageLoadError );
206   view.UrlChangedSignal().Connect( &OnUrlChanged );
207   bool signal1 = false;
208   bool signal2 = false;
209   bool signal3 = false;
210   bool signal4 = false;
211   bool signal5 = false;
212   view.ConnectSignal( testTracker, "pageLoadStarted", CallbackFunctor(&signal1) );
213   view.ConnectSignal( testTracker, "pageLoadInProgress", CallbackFunctor(&signal2) );
214   view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal3) );
215   view.ConnectSignal( testTracker, "urlChanged", CallbackFunctor(&signal4) );
216   view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal5) );
217   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 0, TEST_LOCATION );
218   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 0, TEST_LOCATION );
219   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 0, TEST_LOCATION );
220   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 0, TEST_LOCATION );
221
222   view.LoadUrl( TEST_URL1 );
223   view.GetNaturalSize();
224   Test::EmitGlobalTimerSignal();
225   DALI_TEST_EQUALS( view.CanGoBack(), false, TEST_LOCATION );
226   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 1, TEST_LOCATION );
227   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 1, TEST_LOCATION );
228   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 1, TEST_LOCATION );
229   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 1, TEST_LOCATION );
230   DALI_TEST_CHECK( signal1 & signal2 & signal3 & signal4 );
231   DALI_TEST_CHECK( !signal5 );
232
233   view.LoadUrl( TEST_URL2 );
234   view.Suspend();
235   view.SetProperty( Actor::Property::SIZE, Vector2( 400, 300 ) );
236   application.SendNotification();
237   application.Render();
238   Test::EmitGlobalTimerSignal();
239   view.Resume();
240   DALI_TEST_EQUALS( view.CanGoBack(), true, TEST_LOCATION );
241   DALI_TEST_EQUALS( view.CanGoForward(), false, TEST_LOCATION );
242   DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 2, TEST_LOCATION );
243   DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 2, TEST_LOCATION );
244   DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 2, TEST_LOCATION );
245   DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 2, TEST_LOCATION );
246
247   view.GoBack();
248   Test::EmitGlobalTimerSignal();
249   DALI_TEST_CHECK( !view.CanGoBack() );
250   DALI_TEST_CHECK( view.CanGoForward() );
251
252   view.GoForward();
253   Test::EmitGlobalTimerSignal();
254   DALI_TEST_CHECK( view.CanGoBack() );
255   DALI_TEST_CHECK( !view.CanGoForward() );
256
257   view.Reload();
258   view.StopLoading();
259   view.ClearHistory();
260   Test::EmitGlobalTimerSignal();
261   DALI_TEST_CHECK( !view.CanGoBack() );
262   DALI_TEST_CHECK( !view.CanGoForward() );
263
264   END_TEST;
265 }
266
267 int UtcDaliWebViewTouchAndKeys(void)
268 {
269   ToolkitTestApplication application;
270
271   WebView view = WebView::New();
272   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
273   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
274   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
275   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
276
277   application.GetScene().Add( view );
278   application.SendNotification();
279   application.Render();
280
281   view.GetNaturalSize();
282   view.TouchedSignal().Connect( &OnTouched );
283
284   // Touch event
285   Dali::Integration::TouchEvent event;
286   Dali::Integration::Point pointDown, pointUp;
287
288   event = Dali::Integration::TouchEvent();
289   pointDown.SetState( PointState::DOWN );
290   pointDown.SetScreenPosition( Vector2( 10, 10 ) );
291   event.AddPoint( pointDown );
292   application.ProcessEvent( event );
293
294   event = Dali::Integration::TouchEvent();
295   pointUp.SetState( PointState::UP );
296   pointUp.SetScreenPosition( Vector2( 10, 10 ) );
297   event.AddPoint( pointUp );
298   application.ProcessEvent( event );
299
300   // Key event
301   Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( view );
302   application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) );
303   application.SendNotification();
304
305   DALI_TEST_CHECK( gTouched );
306   DALI_TEST_CHECK( view );
307
308   END_TEST;
309 }
310
311 int UtcDaliWebViewFocusGainedAndLost(void)
312 {
313   ToolkitTestApplication application;
314
315   WebView view = WebView::New();
316   DALI_TEST_CHECK( view );
317
318   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
319   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
320   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
321   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
322
323   application.GetScene().Add( view );
324   application.SendNotification();
325   application.Render();
326
327   view.SetKeyInputFocus();
328   DALI_TEST_CHECK( view.HasKeyInputFocus() );
329
330   // reset
331   view.ClearKeyInputFocus();
332   DALI_TEST_CHECK( !view.HasKeyInputFocus() );
333
334   END_TEST;
335 }
336
337 int UtcDaliWebViewMove(void)
338 {
339   ToolkitTestApplication application;
340
341   WebView view = WebView::New();
342   DALI_TEST_CHECK( view );
343
344   view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
345   view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
346   view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
347   view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
348
349   application.GetScene().Add( view );
350   application.SendNotification();
351   application.Render();
352
353   view.SetProperty( Actor::Property::POSITION, Vector2( 100, 100 ));
354   Vector3 viewPos = view.GetProperty<Vector3>( Actor::Property::POSITION );
355   DALI_TEST_EQUALS( viewPos, Vector3( 100, 100, 0 ), TEST_LOCATION );
356
357   END_TEST;
358 }
359
360 int UtcDaliWebViewPropertyVideoHole(void)
361 {
362   ToolkitTestApplication application;
363
364   WebView view = WebView::New();
365   DALI_TEST_CHECK( view );
366
367   const bool kDefaultValue = true;
368   const bool kTestValue = false;
369
370   // Check default value
371   bool output;
372   Property::Value value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
373   DALI_TEST_CHECK( value.Get( output ) );
374   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
375
376   // Check Set/GetProperty
377   view.SetProperty( WebView::Property::VIDEO_HOLE_ENABLED, kTestValue );
378   value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
379   DALI_TEST_CHECK( value.Get( output ) );
380   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
381
382   END_TEST;
383 }
384
385 int UtcDaliWebViewGetWebBackForwardList(void)
386 {
387   ToolkitTestApplication application;
388
389   WebView view = WebView::New();
390   DALI_TEST_CHECK( view );
391
392   Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
393   DALI_TEST_CHECK( bfList != 0 );
394
395   END_TEST;
396 }
397
398 int UtcDaliWebViewGetWebContext(void)
399 {
400   ToolkitTestApplication application;
401
402   WebView view = WebView::New();
403   DALI_TEST_CHECK( view );
404
405   Dali::Toolkit::WebContext* context = view.GetContext();
406   DALI_TEST_CHECK( context != 0 );
407
408   END_TEST;
409 }
410
411 int UtcDaliWebViewGetWebCookieManager(void)
412 {
413   ToolkitTestApplication application;
414
415   WebView view = WebView::New();
416   DALI_TEST_CHECK( view );
417
418   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
419   DALI_TEST_CHECK( cookieManager != 0 );
420
421   END_TEST;
422 }
423
424 int UtcDaliWebViewGetWebSettings(void)
425 {
426   ToolkitTestApplication application;
427
428   WebView view = WebView::New();
429   DALI_TEST_CHECK( view );
430
431   Dali::Toolkit::WebSettings* settings = view.GetSettings();
432   DALI_TEST_CHECK( settings != 0 );
433
434   END_TEST;
435 }
436
437 int UtcDaliWebViewProperty1(void)
438 {
439   // URL
440   ToolkitTestApplication application;
441
442   WebView view = WebView::New();
443   DALI_TEST_CHECK( view );
444
445   std::string local;
446   view.SetProperty( WebView::Property::URL, TEST_URL1 );
447   Property::Value val = view.GetProperty( WebView::Property::URL );
448   DALI_TEST_CHECK( val.Get( local ) );
449   DALI_TEST_EQUALS( local, TEST_URL1, TEST_LOCATION );
450
451   END_TEST;
452 }
453
454 int UtcDaliWebViewProperty4(void)
455 {
456   // USER_AGENT
457   ToolkitTestApplication application;
458
459   WebView view = WebView::New();
460   DALI_TEST_CHECK( view );
461
462   const std::string kDefaultValue;
463   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";
464
465   // Check default value
466   std::string output;
467   Property::Value value = view.GetProperty( WebView::Property::USER_AGENT );
468   DALI_TEST_CHECK( value.Get( output ) );
469   DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
470
471   // Check Set/GetProperty
472   view.SetProperty( WebView::Property::USER_AGENT, kTestValue );
473   value = view.GetProperty( WebView::Property::USER_AGENT );
474   DALI_TEST_CHECK( value.Get( output ) );
475   DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
476
477   END_TEST;
478 }
479
480 int UtcDaliWebViewProperty9(void)
481 {
482   // SCROLL_POSITION
483   ToolkitTestApplication application;
484
485   WebView view = WebView::New();
486   DALI_TEST_CHECK( view );
487
488   // Check default value
489   Dali::Vector2 output = Dali::Vector2::ONE;
490   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
491   DALI_TEST_CHECK( output.x == 0 && output.y == 0 );
492
493   // Check Set/GetProperty
494   Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
495   view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
496   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
497   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
498
499   // Check default value of scroll size
500   output = Dali::Vector2::ONE;
501   view.GetProperty( WebView::Property::SCROLL_SIZE ).Get( output );
502   DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
503
504   // Check default value of content size
505   output = Dali::Vector2::ONE;
506   view.GetProperty( WebView::Property::CONTENT_SIZE ).Get( output );
507   DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
508
509   END_TEST;
510 }
511
512 int UtcDaliWebViewPropertyTitleFavicon(void)
513 {
514   // SCROLL_POSITION
515   ToolkitTestApplication application;
516
517   char argv[] = "--test";
518   WebView view = WebView::New( 1, (char**)&argv );
519   DALI_TEST_CHECK( view );
520
521   // reset something
522   view.ClearAllTilesResources();
523
524   // Check default value of title
525   std::string testValue("title");
526   std::string output;
527   view.GetProperty( WebView::Property::TITLE ).Get( output );
528   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
529
530   // Check default value of favicon
531   Dali::Toolkit::ImageView* favicon = &view.GetFavicon();
532   DALI_TEST_CHECK( favicon );
533   Dali::Vector3 iconsize = favicon->GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
534   DALI_TEST_CHECK( ( int )iconsize.width == 2 && ( int )iconsize.height == 2 );
535
536   END_TEST;
537 }
538
539 int UtcDaliWebViewScrollBy(void)
540 {
541   ToolkitTestApplication application;
542
543   WebView view = WebView::New();
544   DALI_TEST_CHECK( view );
545
546   // load url.
547   ConnectionTracker* testTracker = new ConnectionTracker();
548   view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
549   bool signal1 = false;
550   view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
551   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
552
553   view.LoadUrl( TEST_URL1 );
554   Test::EmitGlobalTimerSignal();
555
556   // set scroll position.
557   Dali::Vector2 output = Dali::Vector2::ONE;
558   Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
559   view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
560   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
561   DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
562
563   // scroll by and trigger scrollEdgeReached event.
564   view.ScrollBy( 50, 50 );
565   Test::EmitGlobalTimerSignal();
566
567   view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
568   DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
569   DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
570   DALI_TEST_CHECK( signal1 );
571
572   END_TEST;
573 }
574
575 int UtcDaliWebViewEvaluteJavaScript(void)
576 {
577   ToolkitTestApplication application;
578
579   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
580
581   view.LoadHtmlString( "<body>Hello World!</body>" );
582   view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
583   view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript );
584   Test::EmitGlobalTimerSignal();
585
586   DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION );
587
588   END_TEST;
589 }
590
591 int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void)
592 {
593   ToolkitTestApplication application;
594
595   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
596
597   view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert );
598   view.LoadHtmlString( "<head><script type='text/javascript'>alert('this is an alert popup.');</script></head><body>Hello World!</body>" );
599   view.JavaScriptAlertReply();
600   Test::EmitGlobalTimerSignal();
601   DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION );
602
603   view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm );
604   view.LoadHtmlString( "<head><script type='text/javascript'>confirm('this is a confirm popup.');</script></head><body>Hello World!</body>" );
605   view.JavaScriptConfirmReply( true );
606   Test::EmitGlobalTimerSignal();
607   DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION );
608
609   view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt );
610   view.LoadHtmlString( "<head><script type='text/javascript'>prompt('this is a prompt popup.');</script></head><body>Hello World!</body>" );
611   view.JavaScriptPromptReply( "it is a prompt." );
612   Test::EmitGlobalTimerSignal();
613   DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION );
614
615   END_TEST;
616 }
617
618 int UtcDaliWebViewMethodsForCoverage(void)
619 {
620   ToolkitTestApplication application;
621
622   WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
623
624   view.LoadHtmlString( "<body>Hello World!</body>" );
625   view.AddJavaScriptMessageHandler( "jsObject",
626     []( const std::string& arg ) {
627     }
628   );
629
630   DALI_TEST_CHECK( view );
631
632   END_TEST;
633 }
634
635 // test cases for web backforward list.
636
637 int UtcDaliWebBackForwardListCheckItem(void)
638 {
639   ToolkitTestApplication application;
640
641   WebView view = WebView::New();
642   DALI_TEST_CHECK( view );
643
644   Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
645   DALI_TEST_CHECK( bfList != 0 )
646
647   unsigned int itemCount = bfList->GetItemCount();
648   DALI_TEST_CHECK( itemCount == 1 )
649
650   Dali::Toolkit::WebBackForwardListItem* citem = bfList->GetCurrentItem();
651   DALI_TEST_CHECK( citem != 0 );
652
653   const std::string kDefaultUrl( "http://url" );
654   std::string testValue = citem->GetUrl();
655   DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION );
656
657   const std::string kDefaultTitle( "title" );
658   testValue = citem->GetTitle();
659   DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION );
660
661   const std::string kDefaultOriginalUrl( "http://originalurl" );
662   testValue = citem->GetOriginalUrl();
663   DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION );
664
665   Dali::Toolkit::WebBackForwardListItem* item = bfList->GetItemAtIndex( 0 );
666   DALI_TEST_CHECK( item != 0 );
667
668   END_TEST;
669 }
670
671 // test cases for web context.
672
673 int UtcDaliWebContextGetSetCacheModel(void)
674 {
675   ToolkitTestApplication application;
676
677   WebView view = WebView::New();
678   DALI_TEST_CHECK( view );
679
680   Dali::Toolkit::WebContext* context = view.GetContext();
681   DALI_TEST_CHECK( context != 0 )
682
683   std::string kDefaultValue;
684
685   // Reset something
686   context->SetProxyUri( kDefaultValue );
687   context->SetCertificateFilePath( kDefaultValue );
688   context->DisableCache( false );
689   context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
690   context->DeleteWebDatabase();
691   context->DeleteWebStorage();
692   context->DeleteLocalFileSystem();
693   context->ClearCache();
694
695   // Check default value
696   Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
697   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
698
699   // Check Set/GetProperty
700   context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
701   value = context->GetCacheModel();
702   DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
703
704   END_TEST;
705 }
706
707 // test cases for web cookie manager.
708
709 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
710 {
711   ToolkitTestApplication application;
712
713   WebView view = WebView::New();
714   DALI_TEST_CHECK( view );
715
716   Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
717   DALI_TEST_CHECK( cookieManager != 0 )
718
719   const std::string kDefaultValue;
720
721   // Reset something
722   cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
723   cookieManager->ClearCookies();
724
725   // Check default value
726   Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
727   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
728
729   // Check Set/GetProperty
730   cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
731   value = cookieManager->GetCookieAcceptPolicy();
732   DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
733
734   END_TEST;
735 }
736
737 // test cases for web settings.
738
739 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
740 {
741   ToolkitTestApplication application;
742
743   WebView view = WebView::New();
744   DALI_TEST_CHECK( view );
745
746   Dali::Toolkit::WebSettings* settings = view.GetSettings();
747   DALI_TEST_CHECK( settings != 0 )
748
749   // Reset something
750   settings->AllowMixedContents( false );
751   settings->EnableSpatialNavigation( false );
752   settings->EnableWebSecurity( false );
753   settings->AllowFileAccessFromExternalUrl( false );
754   settings->AllowScriptsOpenWindows( false );
755
756   // Check default value
757   int value = settings->GetDefaultFontSize();
758   DALI_TEST_CHECK( value == 16 );
759
760   // Check Set/GetProperty
761   settings->SetDefaultFontSize( 20 );
762   value = settings->GetDefaultFontSize();
763   DALI_TEST_CHECK( value == 20 );
764
765   END_TEST;
766 }
767
768 int UtcDaliWebSettingsCheckEnableJavaScript(void)
769 {
770   ToolkitTestApplication application;
771
772   WebView view = WebView::New();
773   DALI_TEST_CHECK( view );
774
775   Dali::Toolkit::WebSettings* settings = view.GetSettings();
776   DALI_TEST_CHECK( settings != 0 )
777
778   // Reset something
779   settings->AllowMixedContents( false );
780   settings->EnableSpatialNavigation( false );
781   settings->EnableWebSecurity( false );
782   settings->AllowFileAccessFromExternalUrl( false );
783   settings->AllowScriptsOpenWindows( false );
784
785   // Check default value is true or not
786   bool value = settings->IsJavaScriptEnabled();
787   DALI_TEST_CHECK( value );
788
789   // Check Set/GetProperty
790   settings->EnableJavaScript( false );
791   value = settings->IsJavaScriptEnabled();
792   DALI_TEST_CHECK( !value );
793
794   END_TEST;
795 }
796
797 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
798 {
799   ToolkitTestApplication application;
800
801   WebView view = WebView::New();
802   DALI_TEST_CHECK( view );
803
804   Dali::Toolkit::WebSettings* settings = view.GetSettings();
805   DALI_TEST_CHECK( settings != 0 )
806
807   // Reset something
808   settings->AllowMixedContents( false );
809   settings->EnableSpatialNavigation( false );
810   settings->EnableWebSecurity( false );
811   settings->AllowFileAccessFromExternalUrl( false );
812   settings->AllowScriptsOpenWindows( false );
813
814   // Check default value is true or not
815   bool value = settings->AreImagesLoadedAutomatically();
816   DALI_TEST_CHECK( value );
817
818   // Check Set/GetProperty
819   settings->AllowImagesLoadAutomatically( false );
820   value = settings->AreImagesLoadedAutomatically();
821   DALI_TEST_CHECK( !value );
822
823   END_TEST;
824 }
825
826 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
827 {
828   ToolkitTestApplication application;
829
830   WebView view = WebView::New();
831   DALI_TEST_CHECK( view );
832
833   Dali::Toolkit::WebSettings* settings = view.GetSettings();
834   DALI_TEST_CHECK( settings != 0 )
835
836   const std::string kDefaultValue;
837   const std::string kTestValue = "UTF-8";
838
839   // Reset something
840   settings->AllowMixedContents( false );
841   settings->EnableSpatialNavigation( false );
842   settings->EnableWebSecurity( false );
843   settings->AllowFileAccessFromExternalUrl( false );
844   settings->AllowScriptsOpenWindows( false );
845
846   // Check default value
847   std::string value = settings->GetDefaultTextEncodingName();
848   DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
849
850   // Check Set/GetProperty
851   settings->SetDefaultTextEncodingName( kTestValue );
852   value = settings->GetDefaultTextEncodingName();
853   DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );
854
855   END_TEST;
856 }
857