blob: 1023ecca5850ed47c41132b4ab15579aebb92f8f [file] [log] [blame]
// Copyright 2018 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 UI_OZONE_PLATFORM_WAYLAND_WAYLAND_INPUT_METHOD_CONTEXT_H_
#define UI_OZONE_PLATFORM_WAYLAND_WAYLAND_INPUT_METHOD_CONTEXT_H_
#include "base/macros.h"
#include "ui/base/ime/linux/linux_input_method_context.h"
#include "ui/events/ozone/evdev/event_dispatch_callback.h"
#include "ui/ozone/platform/wayland/zwp_text_input_wrapper.h"
namespace ui {
class WaylandConnection;
class ZWPTextInputWrapper;
class WaylandInputMethodContext : public LinuxInputMethodContext,
public ZWPTextInputWrapperClient {
public:
WaylandInputMethodContext(WaylandConnection* connection,
LinuxInputMethodContextDelegate* delegate,
bool is_simple,
const EventDispatchCallback& callback);
~WaylandInputMethodContext() override;
void Init(bool initialize_for_testing = false);
// LinuxInputMethodContext overrides:
bool DispatchKeyEvent(const ui::KeyEvent& key_event) override;
void SetCursorLocation(const gfx::Rect& rect) override;
void SetSurroundingText(const base::string16& text,
const gfx::Range& selection_range) override;
void Reset() override;
void Focus() override;
void Blur() override;
// ui::ZWPTextInputWrapperClient
void OnPreeditString(const std::string& text, int preedit_cursor) override;
void OnCommitString(const std::string& text) override;
void OnDeleteSurroundingText(int32_t index, uint32_t length) override;
void OnKeysym(uint32_t key, uint32_t state, uint32_t modifiers) override;
private:
WaylandConnection* connection_ = nullptr; // TODO(jani) Handle this better
// Delegate interface back to IME code in ui.
LinuxInputMethodContextDelegate* delegate_;
bool is_simple_;
EventDispatchCallback callback_;
std::unique_ptr<ZWPTextInputWrapper> text_input_;
DISALLOW_COPY_AND_ASSIGN(WaylandInputMethodContext);
};
} // namespace ui
#endif // UI_OZONE_PLATFORM_WAYLAND_WAYLAND_INPUT_METHOD_CONTEXT_H_