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