#include <dali-toolkit/internal/text/text-controller.h>
#include <dali-toolkit/internal/text/text-control-interface.h>
#include <dali-toolkit/internal/text/text-editable-control-interface.h>
+#include <dali-toolkit/internal/text/text-controller-impl.h>
using namespace Dali;
using namespace Toolkit;
// Creates a decorator.
Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
*controller );
-
+ InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator );
+ controller->EnableTextInput( decorator, inputMethodContext );
// Enables the cursor blink.
controller->SetEnableCursorBlink( true );
ControllerPtr controller = Controller::New();
std::string text;
- ImfManager::ImfEventData imfEvent;
+ InputMethodContext::EventData imfEvent;
DALI_TEST_CHECK( controller );
Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
*controller );
+ InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator );
+ controller->EnableTextInput( decorator, inputMethodContext );
// Set the placeholder text.
controller->SetPlaceholderText( Controller::PLACEHOLDER_TYPE_INACTIVE, "Hello Dali" );
- // Creates an ImfManager.
- ImfManager imfManager = ImfManager::Get();
-
// For coverage.
- imfEvent = ImfManager::ImfEventData( ImfManager::GETSURROUNDING, "", 0, 0 );
- controller->OnImfEvent( imfManager, imfEvent );
+ imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
// Send VOID event.
- imfEvent = ImfManager::ImfEventData( ImfManager::VOID, "", 0, 0 );
- controller->OnImfEvent( imfManager, imfEvent );
+ imfEvent = InputMethodContext::EventData( InputMethodContext::VOID, "", 0, 0 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
controller->GetText( text );
DALI_TEST_CHECK( text.empty() );
- imfEvent = ImfManager::ImfEventData( ImfManager::COMMIT, "Hello ", 0, 6 );
- controller->OnImfEvent( imfManager, imfEvent );
+ imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
controller->GetNaturalSize();
// Check 'Delete All' key which means the input panel send a big range
- imfEvent = ImfManager::ImfEventData( ImfManager::DELETESURROUNDING, "", -100, 100 );
- controller->OnImfEvent( imfManager, imfEvent );
+ imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -100, 100 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
controller->GetNaturalSize();
controller->GetText( text );
DALI_TEST_EQUALS( "", text, TEST_LOCATION );
// Send COMMIT event.
- imfEvent = ImfManager::ImfEventData( ImfManager::COMMIT, "Hello ", 0, 6 );
- controller->OnImfEvent( imfManager, imfEvent );
+ imfEvent = InputMethodContext::EventData( InputMethodContext::COMMIT, "Hello ", 0, 6 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
// Force to update the model.
controller->GetNaturalSize();
controller->GetText( text );
DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
- // Send PREEDIT event
- imfEvent = ImfManager::ImfEventData( ImfManager::PREEDIT, "w", 6, 1 );
- controller->OnImfEvent( imfManager, imfEvent );
+ // Send PRE_EDIT event
+ imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "w", 6, 1 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
// Force to update the model.
controller->GetNaturalSize();
controller->GetText( text );
DALI_TEST_EQUALS( "Hello w", text, TEST_LOCATION );
- // Send DELETESURROUNDING event
- imfEvent = ImfManager::ImfEventData( ImfManager::DELETESURROUNDING, "", -1, 1 );
- controller->OnImfEvent( imfManager, imfEvent );
+ // Send DELETE_SURROUNDING event
+ imfEvent = InputMethodContext::EventData( InputMethodContext::DELETE_SURROUNDING, "", -1, 1 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
// Force to update the model.
controller->GetNaturalSize();
controller->GetText( text );
DALI_TEST_EQUALS( "Hello ", text, TEST_LOCATION );
- // Send PREEDIT event
- imfEvent = ImfManager::ImfEventData( ImfManager::PREEDIT, "wo", 6, 2 );
- controller->OnImfEvent( imfManager, imfEvent );
+ // Send PRE_EDIT event
+ imfEvent = InputMethodContext::EventData( InputMethodContext::PRE_EDIT, "wo", 6, 2 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
// Force to update the model.
controller->GetNaturalSize();
controller->GetText( text );
DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
- // Send GETSURROUNDING event
- imfEvent = ImfManager::ImfEventData( ImfManager::GETSURROUNDING, "", 0, 0 );
- controller->OnImfEvent( imfManager, imfEvent );
+ // Send GET_SURROUNDING event
+ imfEvent = InputMethodContext::EventData( InputMethodContext::GET_SURROUNDING, "", 0, 0 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
controller->GetText( text );
DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
- // Send PRIVATECOMMAND event
- imfEvent = ImfManager::ImfEventData( ImfManager::PRIVATECOMMAND, "", 0, 0 );
- controller->OnImfEvent( imfManager, imfEvent );
+ // Send PRIVATE_COMMAND event
+ imfEvent = InputMethodContext::EventData( InputMethodContext::PRIVATE_COMMAND, "", 0, 0 );
+ controller->OnInputMethodContextEvent( inputMethodContext, imfEvent );
controller->GetText( text );
DALI_TEST_EQUALS( "Hello wo", text, TEST_LOCATION );
Text::DecoratorPtr decorator = Text::Decorator::New( *controller,
*controller );
+ InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator );
+ controller->EnableTextInput( decorator, inputMethodContext );
// Creates the text's popup.
TextSelectionPopupCallbackInterface& callbackInterface = *controller;
// Creates a decorator.
Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller );
+ InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator );
+ controller->EnableTextInput( decorator, inputMethodContext );
DALI_TEST_CHECK( !controller->IsInputModePassword() );
// Creates a decorator.
Text::DecoratorPtr decorator = Text::Decorator::New( *controller, *controller );
+ InputMethodContext inputMethodContext = InputMethodContext::New();
// Enables the text input.
- controller->EnableTextInput( decorator );
+ controller->EnableTextInput( decorator, inputMethodContext );
DALI_TEST_EQUALS( Controller::NoTextTap::NO_ACTION, controller->GetNoTextDoubleTapAction(), TEST_LOCATION );
controller->SetNoTextDoubleTapAction( Controller::NoTextTap::HIGHLIGHT );
END_TEST;
-}
\ No newline at end of file
+}
+
+int UtcDaliTextControllerCheckBufferIndices(void)
+{
+ tet_infoline(" UtcDaliTextControllerCheckBufferIndices");
+ ToolkitTestApplication application;
+
+ // Creates a text controller.
+ ControllerPtr controller = Controller::New();
+
+ ConfigureTextLabel(controller);
+
+ // Set the text
+ const std::string text("A Quick Brown Fox Jumps Over The Lazy Dog");
+ controller->SetText(text);
+
+ // Get the implementation of the text controller
+ Controller::Impl& mImpl = Controller::Impl::GetImplementation( *controller.Get() );
+
+ // Tweak some parameters to make the indices to access the text buffer invalid
+ mImpl.mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl.mModel->mLogicalModel->mText.Count() * 10u;
+ mImpl.mTextUpdateInfo.mNumberOfCharactersToRemove = 0u;
+ mImpl.mTextUpdateInfo.mPreviousNumberOfCharacters = 0u;
+ mImpl.mOperationsPending = Controller::ALL_OPERATIONS;
+
+ // Perform a relayout
+ const Size size( Dali::Stage::GetCurrent().GetSize() );
+ controller->Relayout(size);
+
+ tet_result(TET_PASS);
+
+ END_TEST;
+}