diff options
Diffstat (limited to 'chromium/win8/metro_driver/ime/text_service.h')
-rw-r--r-- | chromium/win8/metro_driver/ime/text_service.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/chromium/win8/metro_driver/ime/text_service.h b/chromium/win8/metro_driver/ime/text_service.h new file mode 100644 index 00000000000..6ddd21f3ccb --- /dev/null +++ b/chromium/win8/metro_driver/ime/text_service.h @@ -0,0 +1,53 @@ +// Copyright 2013 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef WIN8_METRO_DRIVER_IME_TEXT_SERVICE_H_ +#define WIN8_METRO_DRIVER_IME_TEXT_SERVICE_H_ + +#include <Windows.h> + +#include <vector> + +#include "base/basictypes.h" +#include "base/memory/scoped_ptr.h" + +namespace metro_viewer { +struct CharacterBounds; +} + +namespace metro_driver { + +class TextServiceDelegate; + +// An interface to manage a virtual text store with which an IME communicates. +class TextService { + public: + virtual ~TextService() {} + + // Cancels on-going composition. Does nothing if there is no composition. + virtual void CancelComposition() = 0; + + // Updates document type with |input_scopes| and caret/composition position + // with |character_bounds|. An empty |input_scopes| indicates that IMEs + // should be disabled until non-empty |input_scopes| is specified. + // Note: |input_scopes| is defined as std::vector<int32> here rather than + // std::vector<InputScope> because the wire format of IPC message + // MetroViewerHostMsg_ImeTextInputClientUpdated uses std::vector<int32> to + // avoid dependency on <InputScope.h> header. + virtual void OnDocumentChanged( + const std::vector<int32>& input_scopes, + const std::vector<metro_viewer::CharacterBounds>& character_bounds) = 0; + + // Must be called whenever the attached window gains keyboard focus. + virtual void OnWindowActivated() = 0; +}; + +// Returns an instance of TextService that works together with +// |text_store_delegate| as if it was an text area owned by |window_handle|. +scoped_ptr<TextService> +CreateTextService(TextServiceDelegate* delegate, HWND window_handle); + +} // namespace metro_driver + +#endif // WIN8_METRO_DRIVER_IME_TEXT_SERVICE_H_ |