2 * Copyright (c) 2021 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <dali-toolkit-test-suite-utils.h>
22 #include "dali-toolkit-test-utils/toolkit-timer.h"
25 #include <dali/integration-api/events/hover-event-integ.h>
26 #include <dali/integration-api/events/key-event-integ.h>
27 #include <dali/integration-api/events/touch-event-integ.h>
28 #include <dali/integration-api/events/wheel-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>
40 using namespace Toolkit;
45 const char* const TEST_URL1( "http://www.somewhere.valid1.com" );
46 const char* const TEST_URL2( "http://www.somewhere.valid2.com" );
48 static int gPageLoadStartedCallbackCalled = 0;
49 static int gPageLoadInProgressCallbackCalled = 0;
50 static int gPageLoadFinishedCallbackCalled = 0;
51 static int gScrollEdgeReachedCallbackCalled = 0;
52 static int gUrlChangedCallbackCalled = 0;
53 static int gEvaluateJavaScriptCallbackCalled = 0;
54 static int gJavaScriptAlertCallbackCalled = 0;
55 static int gJavaScriptConfirmCallbackCalled = 0;
56 static int gJavaScriptPromptCallbackCalled = 0;
57 static bool gTouched = false;
58 static bool gHovered = false;
59 static bool gWheelEventHandled = false;
61 struct CallbackFunctor
63 CallbackFunctor(bool* callbackFlag)
64 : mCallbackFlag( callbackFlag )
70 *mCallbackFlag = true;
75 static void OnPageLoadStarted( WebView view, const std::string& url )
77 gPageLoadStartedCallbackCalled++;
80 static void OnPageLoadInProgress( WebView view, const std::string& url )
82 gPageLoadInProgressCallbackCalled++;
85 static void OnPageLoadFinished( WebView view, const std::string& url )
87 gPageLoadFinishedCallbackCalled++;
90 static void OnScrollEdgeReached( WebView view, Dali::WebEnginePlugin::ScrollEdge edge )
92 gScrollEdgeReachedCallbackCalled++;
95 static void OnUrlChanged( WebView view, const std::string& url )
97 gUrlChangedCallbackCalled++;
100 static void OnPageLoadError( WebView view, const std::string& url, WebView::LoadErrorCode errorCode )
104 static void OnEvaluateJavaScript( const std::string& result )
106 gEvaluateJavaScriptCallbackCalled++;
109 static bool OnJavaScriptAlert( const std::string& result )
111 gJavaScriptAlertCallbackCalled++;
115 static bool OnJavaScriptConfirm( const std::string& result )
117 gJavaScriptConfirmCallbackCalled++;
121 static bool OnJavaScriptPrompt( const std::string& meesage1, const std::string& message2 )
123 gJavaScriptPromptCallbackCalled++;
127 static bool OnTouched( Actor actor, const Dali::TouchEvent& touch )
133 static bool OnHovered( Actor actor, const Dali::HoverEvent& hover )
139 static bool OnWheelEvent( Actor actor, const Dali::WheelEvent& wheel )
141 gWheelEventHandled = true;
147 void web_view_startup(void)
149 test_return_value = TET_UNDEF;
152 void web_view_cleanup(void)
154 test_return_value = TET_PASS;
157 int UtcDaliWebViewBasics(void)
159 ToolkitTestApplication application;
161 // Copy and Assignment Test
162 tet_infoline( "UtcDaliWebViewBasic Copy and Assignment Test" );
163 WebView view = WebView::New();
164 DALI_TEST_CHECK( view );
166 WebView copy( view );
167 DALI_TEST_CHECK( view == copy );
170 DALI_TEST_CHECK( !assign );
173 DALI_TEST_CHECK( assign == view );
177 tet_infoline( "UtcDaliWebViewBasic DownCast Test" );
178 BaseHandle handle(view);
180 WebView view2 = WebView::DownCast( handle );
181 DALI_TEST_CHECK( view );
182 DALI_TEST_CHECK( view2 );
183 DALI_TEST_CHECK( view == view2 );
187 tet_infoline( "UtcDaliWebViewBasic TypeRegistry Test" );
188 TypeRegistry typeRegistry = TypeRegistry::Get();
189 DALI_TEST_CHECK( typeRegistry );
191 TypeInfo typeInfo = typeRegistry.GetTypeInfo( "WebView" );
192 DALI_TEST_CHECK( typeInfo );
194 BaseHandle handle2 = typeInfo.CreateInstance();
195 DALI_TEST_CHECK( handle2 );
197 WebView view3 = WebView::DownCast( handle2 );
198 DALI_TEST_CHECK( view3 );
203 int UtcDaliWebViewPageNavigation(void)
205 ToolkitTestApplication application;
207 WebView view = WebView::New();
208 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
209 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
210 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
211 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
212 application.GetScene().Add( view );
213 application.SendNotification();
214 application.Render();
215 DALI_TEST_CHECK( view );
217 ConnectionTracker* testTracker = new ConnectionTracker();
218 view.PageLoadStartedSignal().Connect( &OnPageLoadStarted );
219 view.PageLoadInProgressSignal().Connect( &OnPageLoadInProgress );
220 view.PageLoadFinishedSignal().Connect( &OnPageLoadFinished );
221 view.PageLoadErrorSignal().Connect( &OnPageLoadError );
222 view.UrlChangedSignal().Connect( &OnUrlChanged );
223 bool signal1 = false;
224 bool signal2 = false;
225 bool signal3 = false;
226 bool signal4 = false;
227 bool signal5 = false;
228 view.ConnectSignal( testTracker, "pageLoadStarted", CallbackFunctor(&signal1) );
229 view.ConnectSignal( testTracker, "pageLoadInProgress", CallbackFunctor(&signal2) );
230 view.ConnectSignal( testTracker, "pageLoadFinished", CallbackFunctor(&signal3) );
231 view.ConnectSignal( testTracker, "urlChanged", CallbackFunctor(&signal4) );
232 view.ConnectSignal( testTracker, "invalidname", CallbackFunctor(&signal5) );
233 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 0, TEST_LOCATION );
234 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 0, TEST_LOCATION );
235 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 0, TEST_LOCATION );
236 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 0, TEST_LOCATION );
238 view.LoadUrl( TEST_URL1 );
239 view.GetNaturalSize();
240 Test::EmitGlobalTimerSignal();
241 DALI_TEST_EQUALS( view.CanGoBack(), false, TEST_LOCATION );
242 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 1, TEST_LOCATION );
243 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 1, TEST_LOCATION );
244 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 1, TEST_LOCATION );
245 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 1, TEST_LOCATION );
246 DALI_TEST_CHECK( signal1 & signal2 & signal3 & signal4 );
247 DALI_TEST_CHECK( !signal5 );
249 view.LoadUrl( TEST_URL2 );
251 view.SetProperty( Actor::Property::SIZE, Vector2( 400, 300 ) );
252 application.SendNotification();
253 application.Render();
254 Test::EmitGlobalTimerSignal();
256 DALI_TEST_EQUALS( view.CanGoBack(), true, TEST_LOCATION );
257 DALI_TEST_EQUALS( view.CanGoForward(), false, TEST_LOCATION );
258 DALI_TEST_EQUALS( gPageLoadStartedCallbackCalled, 2, TEST_LOCATION );
259 DALI_TEST_EQUALS( gPageLoadInProgressCallbackCalled, 2, TEST_LOCATION );
260 DALI_TEST_EQUALS( gPageLoadFinishedCallbackCalled, 2, TEST_LOCATION );
261 DALI_TEST_EQUALS( gUrlChangedCallbackCalled, 2, TEST_LOCATION );
264 Test::EmitGlobalTimerSignal();
265 DALI_TEST_CHECK( !view.CanGoBack() );
266 DALI_TEST_CHECK( view.CanGoForward() );
269 Test::EmitGlobalTimerSignal();
270 DALI_TEST_CHECK( view.CanGoBack() );
271 DALI_TEST_CHECK( !view.CanGoForward() );
276 Test::EmitGlobalTimerSignal();
277 DALI_TEST_CHECK( !view.CanGoBack() );
278 DALI_TEST_CHECK( !view.CanGoForward() );
283 int UtcDaliWebViewTouchAndKeys(void)
285 ToolkitTestApplication application;
287 WebView view = WebView::New();
288 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
289 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
290 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
291 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
293 application.GetScene().Add( view );
294 application.SendNotification();
295 application.Render();
297 view.GetNaturalSize();
298 view.TouchedSignal().Connect( &OnTouched );
301 Dali::Integration::TouchEvent event;
302 Dali::Integration::Point pointDown, pointUp;
304 event = Dali::Integration::TouchEvent();
305 pointDown.SetState( PointState::DOWN );
306 pointDown.SetScreenPosition( Vector2( 10, 10 ) );
307 event.AddPoint( pointDown );
308 application.ProcessEvent( event );
310 event = Dali::Integration::TouchEvent();
311 pointUp.SetState( PointState::UP );
312 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
313 event.AddPoint( pointUp );
314 application.ProcessEvent( event );
317 Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( view );
318 application.ProcessEvent( Integration::KeyEvent( "", "", "", DALI_KEY_ESCAPE, 0, 0, Integration::KeyEvent::DOWN, "", "", Device::Class::NONE, Device::Subclass::NONE ) );
319 application.SendNotification();
321 DALI_TEST_CHECK( gTouched );
322 DALI_TEST_CHECK( view );
327 int UtcDaliWebViewFocusGainedAndLost(void)
329 ToolkitTestApplication application;
331 WebView view = WebView::New();
332 DALI_TEST_CHECK( view );
334 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
335 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
336 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
337 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
339 application.GetScene().Add( view );
340 application.SendNotification();
341 application.Render();
343 view.SetKeyInputFocus();
344 DALI_TEST_CHECK( view.HasKeyInputFocus() );
347 view.ClearKeyInputFocus();
348 DALI_TEST_CHECK( !view.HasKeyInputFocus() );
353 int UtcDaliWebViewMove(void)
355 ToolkitTestApplication application;
357 WebView view = WebView::New();
358 DALI_TEST_CHECK( view );
360 view.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT );
361 view.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT );
362 view.SetProperty( Actor::Property::POSITION, Vector2( 0, 0 ));
363 view.SetProperty( Actor::Property::SIZE, Vector2( 800, 600 ) );
365 application.GetScene().Add( view );
366 application.SendNotification();
367 application.Render();
369 view.SetProperty( Actor::Property::POSITION, Vector2( 100, 100 ));
370 Vector3 viewPos = view.GetProperty<Vector3>( Actor::Property::POSITION );
371 DALI_TEST_EQUALS( viewPos, Vector3( 100, 100, 0 ), TEST_LOCATION );
376 int UtcDaliWebViewPropertyVideoHoleEnabled(void)
378 ToolkitTestApplication application;
380 WebView view = WebView::New();
381 DALI_TEST_CHECK( view );
383 const bool kDefaultValue = true;
384 const bool kTestValue = false;
386 // Check default value
388 Property::Value value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
389 DALI_TEST_CHECK( value.Get( output ) );
390 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
392 // Check Set/GetProperty
393 view.SetProperty( WebView::Property::VIDEO_HOLE_ENABLED, kTestValue );
394 value = view.GetProperty( WebView::Property::VIDEO_HOLE_ENABLED );
395 DALI_TEST_CHECK( value.Get( output ) );
396 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
401 int UtcDaliWebViewPropertyMouseEventsEnabled(void)
403 ToolkitTestApplication application;
405 WebView view = WebView::New();
406 DALI_TEST_CHECK( view );
408 const bool kDefaultValue = true;
409 const bool kTestValue = false;
411 // Check default value
413 Property::Value value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
414 DALI_TEST_CHECK( value.Get( output ) );
415 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
417 // Check Set/GetProperty
418 view.SetProperty( WebView::Property::MOUSE_EVENTS_ENABLED, kTestValue );
419 value = view.GetProperty( WebView::Property::MOUSE_EVENTS_ENABLED );
420 DALI_TEST_CHECK( value.Get( output ) );
421 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
426 int UtcDaliWebViewPropertyKeyEventsEnabled(void)
428 ToolkitTestApplication application;
430 WebView view = WebView::New();
431 DALI_TEST_CHECK( view );
433 const bool kDefaultValue = true;
434 const bool kTestValue = false;
436 // Check default value
438 Property::Value value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
439 DALI_TEST_CHECK( value.Get( output ) );
440 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
442 // Check Set/GetProperty
443 view.SetProperty( WebView::Property::KEY_EVENTS_ENABLED, kTestValue );
444 value = view.GetProperty( WebView::Property::KEY_EVENTS_ENABLED );
445 DALI_TEST_CHECK( value.Get( output ) );
446 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
451 int UtcDaliWebViewHoverAndWheel(void)
453 ToolkitTestApplication application;
455 WebView view = WebView::New();
456 DALI_TEST_CHECK( view );
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 ) );
462 application.GetScene().Add( view );
463 application.SendNotification();
464 application.Render();
466 view.GetNaturalSize();
467 view.HoveredSignal().Connect( &OnHovered );
468 view.WheelEventSignal().Connect( &OnWheelEvent );
471 Dali::Integration::HoverEvent event = Dali::Integration::HoverEvent();
472 Dali::Integration::Point pointDown;
473 pointDown.SetState( PointState::DOWN );
474 pointDown.SetScreenPosition( Vector2( 10, 10 ) );
475 event.AddPoint( pointDown );
476 application.ProcessEvent( event );
478 event = Dali::Integration::HoverEvent();
479 Dali::Integration::Point pointUp;
480 pointUp.SetState( PointState::UP );
481 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
482 event.AddPoint( pointUp );
483 application.ProcessEvent( event );
485 event = Dali::Integration::HoverEvent();
486 Dali::Integration::Point pointMotion;
487 pointUp.SetState( PointState::MOTION );
488 pointUp.SetScreenPosition( Vector2( 10, 10 ) );
489 event.AddPoint( pointMotion );
490 application.ProcessEvent( event );
493 Dali::Integration::WheelEvent wheelEvent;
494 wheelEvent.type = Dali::Integration::WheelEvent::Type::MOUSE_WHEEL;
495 wheelEvent.direction = 0;
496 wheelEvent.point = Vector2( 20, 20 );
497 wheelEvent.delta = 10;
498 application.ProcessEvent( wheelEvent );
499 application.SendNotification();
501 DALI_TEST_CHECK( gHovered );
502 DALI_TEST_CHECK( gWheelEventHandled );
507 int UtcDaliWebViewGetWebBackForwardList(void)
509 ToolkitTestApplication application;
511 WebView view = WebView::New();
512 DALI_TEST_CHECK( view );
514 Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
515 DALI_TEST_CHECK( bfList != 0 );
520 int UtcDaliWebViewGetWebContext(void)
522 ToolkitTestApplication application;
524 WebView view = WebView::New();
525 DALI_TEST_CHECK( view );
527 Dali::Toolkit::WebContext* context = view.GetContext();
528 DALI_TEST_CHECK( context != 0 );
533 int UtcDaliWebViewGetWebCookieManager(void)
535 ToolkitTestApplication application;
537 WebView view = WebView::New();
538 DALI_TEST_CHECK( view );
540 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
541 DALI_TEST_CHECK( cookieManager != 0 );
546 int UtcDaliWebViewGetWebSettings(void)
548 ToolkitTestApplication application;
550 WebView view = WebView::New();
551 DALI_TEST_CHECK( view );
553 Dali::Toolkit::WebSettings* settings = view.GetSettings();
554 DALI_TEST_CHECK( settings != 0 );
559 int UtcDaliWebViewProperty1(void)
562 ToolkitTestApplication application;
564 WebView view = WebView::New();
565 DALI_TEST_CHECK( view );
568 view.SetProperty( WebView::Property::URL, TEST_URL1 );
569 Property::Value val = view.GetProperty( WebView::Property::URL );
570 DALI_TEST_CHECK( val.Get( local ) );
571 DALI_TEST_EQUALS( local, TEST_URL1, TEST_LOCATION );
576 int UtcDaliWebViewProperty4(void)
579 ToolkitTestApplication application;
581 WebView view = WebView::New();
582 DALI_TEST_CHECK( view );
584 const std::string kDefaultValue;
585 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";
587 // Check default value
589 Property::Value value = view.GetProperty( WebView::Property::USER_AGENT );
590 DALI_TEST_CHECK( value.Get( output ) );
591 DALI_TEST_EQUALS( output, kDefaultValue, TEST_LOCATION );
593 // Check Set/GetProperty
594 view.SetProperty( WebView::Property::USER_AGENT, kTestValue );
595 value = view.GetProperty( WebView::Property::USER_AGENT );
596 DALI_TEST_CHECK( value.Get( output ) );
597 DALI_TEST_EQUALS( output, kTestValue, TEST_LOCATION );
602 int UtcDaliWebViewProperty9(void)
605 ToolkitTestApplication application;
607 WebView view = WebView::New();
608 DALI_TEST_CHECK( view );
610 // Check default value
611 Dali::Vector2 output = Dali::Vector2::ONE;
612 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
613 DALI_TEST_CHECK( output.x == 0 && output.y == 0 );
615 // Check Set/GetProperty
616 Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
617 view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
618 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
619 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
621 // Check default value of scroll size
622 output = Dali::Vector2::ONE;
623 view.GetProperty( WebView::Property::SCROLL_SIZE ).Get( output );
624 DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
626 // Check default value of content size
627 output = Dali::Vector2::ONE;
628 view.GetProperty( WebView::Property::CONTENT_SIZE ).Get( output );
629 DALI_TEST_CHECK( output.x == 500 && output.y == 500 );
634 int UtcDaliWebViewPropertyBackgroundColorSelectedTextEtc(void)
636 ToolkitTestApplication application;
638 WebView view = WebView::New();
639 DALI_TEST_CHECK( view );
641 Dali::Vector4 testValue = Dali::Vector4(0.0f, 0.0f, 0.0f, 0.0f);
642 view.SetProperty(WebView::Property::DOCUMENT_BACKGROUND_COLOR, testValue);
643 view.SetProperty(WebView::Property::TILES_CLEARED_WHEN_HIDDEN, true);
644 view.SetProperty(WebView::Property::TILE_COVER_AREA_MULTIPLIER, 1.0f);
645 view.SetProperty(WebView::Property::CURSOR_ENABLED_BY_CLIENT, true);
647 // Check default value
648 std::string testText("test");
650 view.GetProperty(WebView::Property::SELECTED_TEXT).Get(output);
651 DALI_TEST_EQUALS(output, testText, TEST_LOCATION);
656 int UtcDaliWebViewPropertyTitleFavicon(void)
658 ToolkitTestApplication application;
660 char argv[] = "--test";
661 WebView view = WebView::New( 1, (char**)&argv );
662 DALI_TEST_CHECK( view );
665 view.ClearAllTilesResources();
667 // Check default value of title
668 std::string testValue("title");
670 view.GetProperty( WebView::Property::TITLE ).Get( output );
671 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
673 // Check default value of favicon
674 Dali::Toolkit::ImageView* favicon = &view.GetFavicon();
675 DALI_TEST_CHECK( favicon );
676 Dali::Vector3 iconsize = favicon->GetProperty< Vector3 >( Dali::Actor::Property::SIZE );
677 DALI_TEST_CHECK( ( int )iconsize.width == 2 && ( int )iconsize.height == 2 );
682 int UtcDaliWebViewScrollBy(void)
684 ToolkitTestApplication application;
686 WebView view = WebView::New();
687 DALI_TEST_CHECK( view );
690 ConnectionTracker* testTracker = new ConnectionTracker();
691 view.ScrollEdgeReachedSignal().Connect( &OnScrollEdgeReached );
692 bool signal1 = false;
693 view.ConnectSignal( testTracker, "scrollEdgeReached", CallbackFunctor(&signal1) );
694 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 0, TEST_LOCATION );
696 view.LoadUrl( TEST_URL1 );
697 Test::EmitGlobalTimerSignal();
699 // set scroll position.
700 Dali::Vector2 output = Dali::Vector2::ONE;
701 Dali::Vector2 testValue = Dali::Vector2( 100, 100 );
702 view.SetProperty( WebView::Property::SCROLL_POSITION, testValue );
703 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
704 DALI_TEST_EQUALS( output, testValue, TEST_LOCATION );
706 // scroll by and trigger scrollEdgeReached event.
707 view.ScrollBy( 50, 50 );
708 Test::EmitGlobalTimerSignal();
710 view.GetProperty( WebView::Property::SCROLL_POSITION ).Get( output );
711 DALI_TEST_CHECK( output.x == 150 && output.y == 150 );
712 DALI_TEST_EQUALS( gScrollEdgeReachedCallbackCalled, 1, TEST_LOCATION );
713 DALI_TEST_CHECK( signal1 );
718 int UtcDaliWebViewEvaluteJavaScript(void)
720 ToolkitTestApplication application;
722 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
724 view.LoadHtmlString( "<body>Hello World!</body>" );
725 view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
726 view.EvaluateJavaScript( "jsObject.postMessage('World')", OnEvaluateJavaScript );
727 Test::EmitGlobalTimerSignal();
729 DALI_TEST_EQUALS( gEvaluateJavaScriptCallbackCalled, 1, TEST_LOCATION );
734 int UtcDaliWebViewJavaScriptAlertConfirmPrompt(void)
736 ToolkitTestApplication application;
738 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
740 view.RegisterJavaScriptAlertCallback( &OnJavaScriptAlert );
741 view.LoadHtmlString( "<head><script type='text/javascript'>alert('this is an alert popup.');</script></head><body>Hello World!</body>" );
742 view.JavaScriptAlertReply();
743 Test::EmitGlobalTimerSignal();
744 DALI_TEST_EQUALS( gJavaScriptAlertCallbackCalled, 1, TEST_LOCATION );
746 view.RegisterJavaScriptConfirmCallback( &OnJavaScriptConfirm );
747 view.LoadHtmlString( "<head><script type='text/javascript'>confirm('this is a confirm popup.');</script></head><body>Hello World!</body>" );
748 view.JavaScriptConfirmReply( true );
749 Test::EmitGlobalTimerSignal();
750 DALI_TEST_EQUALS( gJavaScriptConfirmCallbackCalled, 1, TEST_LOCATION );
752 view.RegisterJavaScriptPromptCallback( &OnJavaScriptPrompt );
753 view.LoadHtmlString( "<head><script type='text/javascript'>prompt('this is a prompt popup.');</script></head><body>Hello World!</body>" );
754 view.JavaScriptPromptReply( "it is a prompt." );
755 Test::EmitGlobalTimerSignal();
756 DALI_TEST_EQUALS( gJavaScriptPromptCallbackCalled, 1, TEST_LOCATION );
761 int UtcDaliWebViewMethodsForCoverage(void)
763 ToolkitTestApplication application;
765 WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
767 view.LoadHtmlString( "<body>Hello World!</body>" );
768 view.AddJavaScriptMessageHandler( "jsObject",
769 []( const std::string& arg ) {
773 DALI_TEST_CHECK( view );
778 // test cases for web backforward list.
780 int UtcDaliWebBackForwardListCheckItem(void)
782 ToolkitTestApplication application;
784 WebView view = WebView::New();
785 DALI_TEST_CHECK( view );
787 Dali::Toolkit::WebBackForwardList* bfList = view.GetBackForwardList();
788 DALI_TEST_CHECK( bfList != 0 )
790 unsigned int itemCount = bfList->GetItemCount();
791 DALI_TEST_CHECK( itemCount == 1 )
793 Dali::Toolkit::WebBackForwardListItem* citem = bfList->GetCurrentItem();
794 DALI_TEST_CHECK( citem != 0 );
796 const std::string kDefaultUrl( "http://url" );
797 std::string testValue = citem->GetUrl();
798 DALI_TEST_EQUALS( testValue, kDefaultUrl, TEST_LOCATION );
800 const std::string kDefaultTitle( "title" );
801 testValue = citem->GetTitle();
802 DALI_TEST_EQUALS( testValue, kDefaultTitle, TEST_LOCATION );
804 const std::string kDefaultOriginalUrl( "http://originalurl" );
805 testValue = citem->GetOriginalUrl();
806 DALI_TEST_EQUALS( testValue, kDefaultOriginalUrl, TEST_LOCATION );
808 Dali::Toolkit::WebBackForwardListItem* item = bfList->GetItemAtIndex( 0 );
809 DALI_TEST_CHECK( item != 0 );
814 // test cases for web context.
816 int UtcDaliWebContextGetSetCacheModel(void)
818 ToolkitTestApplication application;
820 WebView view = WebView::New();
821 DALI_TEST_CHECK( view );
823 Dali::Toolkit::WebContext* context = view.GetContext();
824 DALI_TEST_CHECK( context != 0 )
826 std::string kDefaultValue;
829 context->SetProxyUri( kDefaultValue );
830 context->SetCertificateFilePath( kDefaultValue );
831 context->DisableCache( false );
832 context->SetDefaultProxyAuth( kDefaultValue, kDefaultValue );
833 context->DeleteWebDatabase();
834 context->DeleteWebStorage();
835 context->DeleteLocalFileSystem();
836 context->ClearCache();
838 // Check default value
839 Dali::WebEngineContext::CacheModel value = context->GetCacheModel();
840 DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_VIEWER );
842 // Check Set/GetProperty
843 context->SetCacheModel( Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
844 value = context->GetCacheModel();
845 DALI_TEST_CHECK( value == Dali::WebEngineContext::CacheModel::DOCUMENT_BROWSER );
850 // test cases for web cookie manager.
852 int UtcDaliWebCookieManagerGetSetCookieAcceptPolicy(void)
854 ToolkitTestApplication application;
856 WebView view = WebView::New();
857 DALI_TEST_CHECK( view );
859 Dali::Toolkit::WebCookieManager* cookieManager = view.GetCookieManager();
860 DALI_TEST_CHECK( cookieManager != 0 )
862 const std::string kDefaultValue;
865 cookieManager->SetPersistentStorage( kDefaultValue, Dali::WebEngineCookieManager::CookiePersistentStorage::SQLITE );
866 cookieManager->ClearCookies();
868 // Check default value
869 Dali::WebEngineCookieManager::CookieAcceptPolicy value = cookieManager->GetCookieAcceptPolicy();
870 DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::NO_THIRD_PARTY );
872 // Check Set/GetProperty
873 cookieManager->SetCookieAcceptPolicy( Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
874 value = cookieManager->GetCookieAcceptPolicy();
875 DALI_TEST_CHECK( value == Dali::WebEngineCookieManager::CookieAcceptPolicy::ALWAYS );
880 // test cases for web settings.
882 int UtcDaliWebSettingsGetSetDefaultFontSize(void)
884 ToolkitTestApplication application;
886 WebView view = WebView::New();
887 DALI_TEST_CHECK( view );
889 Dali::Toolkit::WebSettings* settings = view.GetSettings();
890 DALI_TEST_CHECK( settings != 0 )
893 settings->AllowMixedContents( false );
894 settings->EnableSpatialNavigation( false );
895 settings->EnableWebSecurity( false );
896 settings->EnableCacheBuilder( false );
897 settings->EnableDoNotTrack( false );
898 settings->UseScrollbarThumbFocusNotifications( false );
899 settings->AllowFileAccessFromExternalUrl( false );
900 settings->AllowScriptsOpenWindows( false );
902 // Check default value
903 int value = settings->GetDefaultFontSize();
904 DALI_TEST_CHECK( value == 16 );
906 // Check Set/GetProperty
907 settings->SetDefaultFontSize( 20 );
908 value = settings->GetDefaultFontSize();
909 DALI_TEST_CHECK( value == 20 );
914 int UtcDaliWebSettingsCheckEnableJavaScript(void)
916 ToolkitTestApplication application;
918 WebView view = WebView::New();
919 DALI_TEST_CHECK( view );
921 Dali::Toolkit::WebSettings* settings = view.GetSettings();
922 DALI_TEST_CHECK( settings != 0 )
925 settings->AllowMixedContents( false );
926 settings->EnableSpatialNavigation( false );
927 settings->EnableWebSecurity( false );
928 settings->EnableCacheBuilder( false );
929 settings->EnableDoNotTrack( false );
930 settings->UseScrollbarThumbFocusNotifications( false );
931 settings->AllowFileAccessFromExternalUrl( false );
932 settings->AllowScriptsOpenWindows( false );
934 // Check default value is true or not
935 bool value = settings->IsJavaScriptEnabled();
936 DALI_TEST_CHECK( value );
938 // Check Set/GetProperty
939 settings->EnableJavaScript( false );
940 value = settings->IsJavaScriptEnabled();
941 DALI_TEST_CHECK( !value );
946 int UtcDaliWebSettingsCheckEnableAutoFitting(void)
948 ToolkitTestApplication application;
950 WebView view = WebView::New();
951 DALI_TEST_CHECK( view );
953 Dali::Toolkit::WebSettings* settings = view.GetSettings();
954 DALI_TEST_CHECK( settings != 0 )
957 settings->AllowMixedContents( false );
958 settings->EnableSpatialNavigation( false );
959 settings->EnableWebSecurity( false );
960 settings->EnableCacheBuilder( false );
961 settings->EnableDoNotTrack( false );
962 settings->UseScrollbarThumbFocusNotifications( false );
963 settings->AllowFileAccessFromExternalUrl( false );
964 settings->AllowScriptsOpenWindows( false );
966 // Check default value is true or not
967 bool value = settings->IsAutoFittingEnabled();
968 DALI_TEST_CHECK( value );
970 // Check Set/GetProperty
971 settings->EnableAutoFitting( false );
972 value = settings->IsAutoFittingEnabled();
973 DALI_TEST_CHECK( !value );
978 int UtcDaliWebSettingsCheckEnablePlugins(void)
980 ToolkitTestApplication application;
982 WebView view = WebView::New();
983 DALI_TEST_CHECK( view );
985 Dali::Toolkit::WebSettings* settings = view.GetSettings();
986 DALI_TEST_CHECK( settings != 0 )
989 settings->AllowMixedContents( false );
990 settings->EnableSpatialNavigation( false );
991 settings->EnableWebSecurity( false );
992 settings->EnableCacheBuilder( false );
993 settings->EnableDoNotTrack( false );
994 settings->UseScrollbarThumbFocusNotifications( false );
995 settings->AllowFileAccessFromExternalUrl( false );
996 settings->AllowScriptsOpenWindows( false );
998 // Check default value is true or not
999 bool value = settings->ArePluginsEnabled();
1000 DALI_TEST_CHECK( value );
1002 // Check Set/GetProperty
1003 settings->EnablePlugins( false );
1004 value = settings->ArePluginsEnabled();
1005 DALI_TEST_CHECK( !value );
1010 int UtcDaliWebSettingsCheckEnablePrivateBrowsing(void)
1012 ToolkitTestApplication application;
1014 WebView view = WebView::New();
1015 DALI_TEST_CHECK( view );
1017 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1018 DALI_TEST_CHECK( settings != 0 )
1021 settings->AllowMixedContents( false );
1022 settings->EnableSpatialNavigation( false );
1023 settings->EnableWebSecurity( false );
1024 settings->EnableCacheBuilder( false );
1025 settings->EnableDoNotTrack( false );
1026 settings->UseScrollbarThumbFocusNotifications( false );
1027 settings->AllowFileAccessFromExternalUrl( false );
1028 settings->AllowScriptsOpenWindows( false );
1030 // Check default value is true or not
1031 bool value = settings->IsPrivateBrowsingEnabled();
1032 DALI_TEST_CHECK( value );
1034 // Check Set/GetProperty
1035 settings->EnablePrivateBrowsing( false );
1036 value = settings->IsPrivateBrowsingEnabled();
1037 DALI_TEST_CHECK( !value );
1042 int UtcDaliWebSettingsCheckEnableLinkMagnifier(void)
1044 ToolkitTestApplication application;
1046 WebView view = WebView::New();
1047 DALI_TEST_CHECK( view );
1049 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1050 DALI_TEST_CHECK( settings != 0 )
1053 settings->AllowMixedContents( false );
1054 settings->EnableSpatialNavigation( false );
1055 settings->EnableWebSecurity( false );
1056 settings->EnableCacheBuilder( false );
1057 settings->EnableDoNotTrack( false );
1058 settings->UseScrollbarThumbFocusNotifications( false );
1059 settings->AllowFileAccessFromExternalUrl( false );
1060 settings->AllowScriptsOpenWindows( false );
1062 // Check default value is true or not
1063 bool value = settings->IsLinkMagnifierEnabled();
1064 DALI_TEST_CHECK( value );
1066 // Check Set/GetProperty
1067 settings->EnableLinkMagnifier( false );
1068 value = settings->IsLinkMagnifierEnabled();
1069 DALI_TEST_CHECK( !value );
1074 int UtcDaliWebSettingsCheckUseKeypadWithoutUserAction(void)
1076 ToolkitTestApplication application;
1078 WebView view = WebView::New();
1079 DALI_TEST_CHECK( view );
1081 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1082 DALI_TEST_CHECK( settings != 0 )
1085 settings->AllowMixedContents( false );
1086 settings->EnableSpatialNavigation( false );
1087 settings->EnableWebSecurity( false );
1088 settings->EnableCacheBuilder( false );
1089 settings->EnableDoNotTrack( false );
1090 settings->UseScrollbarThumbFocusNotifications( false );
1091 settings->AllowFileAccessFromExternalUrl( false );
1092 settings->AllowScriptsOpenWindows( false );
1094 // Check default value is true or not
1095 bool value = settings->IsKeypadWithoutUserActionUsed();
1096 DALI_TEST_CHECK( value );
1098 // Check Set/GetProperty
1099 settings->UseKeypadWithoutUserAction( false );
1100 value = settings->IsKeypadWithoutUserActionUsed();
1101 DALI_TEST_CHECK( !value );
1106 int UtcDaliWebSettingsCheckEnableAutofillPasswordForm(void)
1108 ToolkitTestApplication application;
1110 WebView view = WebView::New();
1111 DALI_TEST_CHECK( view );
1113 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1114 DALI_TEST_CHECK( settings != 0 )
1117 settings->AllowMixedContents( false );
1118 settings->EnableSpatialNavigation( false );
1119 settings->EnableWebSecurity( false );
1120 settings->EnableCacheBuilder( false );
1121 settings->EnableDoNotTrack( false );
1122 settings->UseScrollbarThumbFocusNotifications( false );
1123 settings->AllowFileAccessFromExternalUrl( false );
1124 settings->AllowScriptsOpenWindows( false );
1126 // Check default value is true or not
1127 bool value = settings->IsAutofillPasswordFormEnabled();
1128 DALI_TEST_CHECK( value );
1129 settings->EnableAutofillPasswordForm( false );
1130 value = settings->IsAutofillPasswordFormEnabled();
1131 DALI_TEST_CHECK( !value );
1135 int UtcDaliWebSettingsCheckEnableFormCandidateData(void)
1137 ToolkitTestApplication application;
1139 WebView view = WebView::New();
1140 DALI_TEST_CHECK( view );
1142 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1143 DALI_TEST_CHECK( settings != 0 );
1146 settings->AllowMixedContents( false );
1147 settings->EnableSpatialNavigation( false );
1148 settings->EnableWebSecurity( false );
1149 settings->EnableCacheBuilder( false );
1150 settings->EnableDoNotTrack( false );
1151 settings->UseScrollbarThumbFocusNotifications( false );
1152 settings->AllowFileAccessFromExternalUrl( false );
1153 settings->AllowScriptsOpenWindows( false );
1155 // Check default value is true or not
1156 bool value = settings->IsFormCandidateDataEnabled();
1157 DALI_TEST_CHECK( value );
1159 // Check Set/GetProperty
1160 settings->EnableFormCandidateData( false );
1161 value = settings->IsFormCandidateDataEnabled();
1162 DALI_TEST_CHECK( !value );
1167 int UtcDaliWebSettingsCheckEnableTextSelection(void)
1169 ToolkitTestApplication application;
1171 WebView view = WebView::New();
1172 DALI_TEST_CHECK( view );
1174 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1175 DALI_TEST_CHECK( settings != 0 );
1178 settings->AllowMixedContents( false );
1179 settings->EnableSpatialNavigation( false );
1180 settings->EnableWebSecurity( false );
1181 settings->EnableCacheBuilder( false );
1182 settings->EnableDoNotTrack( false );
1183 settings->UseScrollbarThumbFocusNotifications( false );
1184 settings->AllowFileAccessFromExternalUrl( false );
1185 settings->AllowScriptsOpenWindows( false );
1187 // Check default value is true or not
1188 bool value = settings->IsTextSelectionEnabled();
1189 DALI_TEST_CHECK( value );
1191 //Check Set/GetProperty
1192 settings->EnableTextSelection(false);
1193 value = settings->IsTextSelectionEnabled();
1194 DALI_TEST_CHECK( !value );
1199 int UtcDaliWebSettingsCheckEnableTextAutosizing(void)
1201 ToolkitTestApplication application;
1203 WebView view = WebView::New();
1204 DALI_TEST_CHECK( view );
1206 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1207 DALI_TEST_CHECK( settings != 0 );
1210 settings->AllowMixedContents( false );
1211 settings->EnableSpatialNavigation( false );
1212 settings->EnableWebSecurity( false );
1213 settings->EnableCacheBuilder( false );
1214 settings->EnableDoNotTrack( false );
1215 settings->UseScrollbarThumbFocusNotifications( false );
1216 settings->AllowFileAccessFromExternalUrl( false );
1217 settings->AllowScriptsOpenWindows( false );
1219 // Check default value is true or not
1220 bool value = settings->IsTextAutosizingEnabled();
1221 DALI_TEST_CHECK( value );
1223 // Check Set/GetProperty
1224 settings->EnableTextAutosizing(false);
1225 value = settings->IsTextAutosizingEnabled();
1226 DALI_TEST_CHECK( !value );
1231 int UtcDaliWebSettingsCheckEnableArrowScroll(void)
1233 ToolkitTestApplication application;
1235 WebView view = WebView::New();
1236 DALI_TEST_CHECK( view );
1238 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1239 DALI_TEST_CHECK( settings != 0 );
1242 settings->AllowMixedContents( false );
1243 settings->EnableSpatialNavigation( false );
1244 settings->EnableWebSecurity( false );
1245 settings->EnableCacheBuilder( false );
1246 settings->EnableDoNotTrack( false );
1247 settings->UseScrollbarThumbFocusNotifications( false );
1248 settings->AllowFileAccessFromExternalUrl( false );
1249 settings->AllowScriptsOpenWindows( false );
1251 // Check default value is true or not
1252 bool value = settings->IsArrowScrollEnabled();
1253 DALI_TEST_CHECK( value );
1255 // Check Set/GetProperty
1256 settings->EnableArrowScroll(false);
1257 value = settings->IsArrowScrollEnabled();
1258 DALI_TEST_CHECK( !value );
1263 int UtcDaliWebSettingsCheckEnableClipboard(void)
1265 ToolkitTestApplication application;
1267 WebView view = WebView::New();
1268 DALI_TEST_CHECK( view );
1270 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1271 DALI_TEST_CHECK( settings != 0 );
1274 settings->AllowMixedContents( false );
1275 settings->EnableSpatialNavigation( false );
1276 settings->EnableWebSecurity( false );
1277 settings->EnableCacheBuilder( false );
1278 settings->EnableDoNotTrack( false );
1279 settings->UseScrollbarThumbFocusNotifications( false );
1280 settings->AllowFileAccessFromExternalUrl( false );
1281 settings->AllowScriptsOpenWindows( false );
1283 // Check default value is true or not
1284 bool value = settings->IsClipboardEnabled();
1285 DALI_TEST_CHECK( value );
1286 settings->EnableClipboard(false);
1287 value = settings->IsClipboardEnabled();
1288 DALI_TEST_CHECK( !value );
1292 int UtcDaliWebSettingsCheckEnableImePanel(void)
1294 ToolkitTestApplication application;
1296 WebView view = WebView::New();
1297 DALI_TEST_CHECK( view );
1299 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1300 DALI_TEST_CHECK( settings != 0 );
1303 settings->AllowMixedContents( false );
1304 settings->EnableSpatialNavigation( false );
1305 settings->EnableWebSecurity( false );
1306 settings->EnableCacheBuilder( false );
1307 settings->EnableDoNotTrack( false );
1308 settings->UseScrollbarThumbFocusNotifications( false );
1309 settings->AllowFileAccessFromExternalUrl( false );
1310 settings->AllowScriptsOpenWindows( false );
1312 // Check default value is true or not
1313 bool value = settings->IsImePanelEnabled();
1314 DALI_TEST_CHECK( value );
1316 // Check Set/GetProperty
1317 settings->EnableImePanel(false);
1318 value = settings->IsImePanelEnabled();
1319 DALI_TEST_CHECK( !value );
1324 int UtcDaliWebSettingsCheckAllowImagesLoadAutomatically(void)
1326 ToolkitTestApplication application;
1328 WebView view = WebView::New();
1329 DALI_TEST_CHECK( view );
1331 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1332 DALI_TEST_CHECK( settings != 0 )
1335 settings->AllowMixedContents( false );
1336 settings->EnableSpatialNavigation( false );
1337 settings->EnableWebSecurity( false );
1338 settings->EnableCacheBuilder( false );
1339 settings->EnableDoNotTrack( false );
1340 settings->UseScrollbarThumbFocusNotifications( false );
1341 settings->AllowFileAccessFromExternalUrl( false );
1342 settings->AllowScriptsOpenWindows( false );
1344 // Check default value is true or not
1345 bool value = settings->AreImagesLoadedAutomatically();
1346 DALI_TEST_CHECK( value );
1348 // Check Set/GetProperty
1349 settings->AllowImagesLoadAutomatically( false );
1350 value = settings->AreImagesLoadedAutomatically();
1351 DALI_TEST_CHECK( !value );
1356 int UtcDaliWebSettingsGetSetDefaultTextEncodingName(void)
1358 ToolkitTestApplication application;
1360 WebView view = WebView::New();
1361 DALI_TEST_CHECK( view );
1363 Dali::Toolkit::WebSettings* settings = view.GetSettings();
1364 DALI_TEST_CHECK( settings != 0 )
1366 const std::string kDefaultValue;
1367 const std::string kTestValue = "UTF-8";
1370 settings->AllowMixedContents( false );
1371 settings->EnableSpatialNavigation( false );
1372 settings->EnableWebSecurity( false );
1373 settings->EnableCacheBuilder( false );
1374 settings->EnableDoNotTrack( false );
1375 settings->UseScrollbarThumbFocusNotifications( false );
1376 settings->AllowFileAccessFromExternalUrl( false );
1377 settings->AllowScriptsOpenWindows( false );
1379 // Check default value
1380 std::string value = settings->GetDefaultTextEncodingName();
1381 DALI_TEST_EQUALS( value, kDefaultValue, TEST_LOCATION );
1383 // Check Set/GetProperty
1384 settings->SetDefaultTextEncodingName( kTestValue );
1385 value = settings->GetDefaultTextEncodingName();
1386 DALI_TEST_EQUALS( value, kTestValue, TEST_LOCATION );