blob: c651b3a1d9939dce77902e756ce35ef1359d70a1 [file] [log] [blame]
// Copyright 2019 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 THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_IME_TEXT_UPDATE_EVENT_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_IME_TEXT_UPDATE_EVENT_H_
#include "base/macros.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/dom/events/event.h"
namespace blink {
class TextUpdateEventInit;
class TextUpdateEvent;
// The textupdate event will be fired on the EditContext when user input has
// resulted in characters being applied to the editable region. The event
// signals the fact that the software keyboard or IME updated the text (and as
// such that state is reflected in the shared buffer at the time the event is
// fired). This can be a single character update, in the case of typical typing
// scenarios, or multiple-character insertion based on the user changing
// composition candidates. Even though text updates are the results of the
// software keyboard modifying the buffer, the creator of the EditContext is
// ultimately responsible for keeping its underlying model up-to-date with the
// content that is being edited as well as telling the EditContext about such
// changes. These could get out of sync, for example, when updates to the
// editable content come in through other means (the backspace key is a
// canonical example — no textupdate is fired in this case, and the consumer of
// the EditContext should detect the keydown event and remove characters as
// appropriate).
class CORE_EXPORT TextUpdateEvent final : public Event {
DEFINE_WRAPPERTYPEINFO();
public:
TextUpdateEvent(const TextUpdateEventInit* dict);
TextUpdateEvent(const String& update_text,
uint32_t update_range_start,
uint32_t update_range_end,
uint32_t new_selection_start,
uint32_t new_selection_end);
static TextUpdateEvent* Create(const TextUpdateEventInit* dict);
~TextUpdateEvent() override;
String updateText() const;
uint32_t updateRangeStart() const;
uint32_t updateRangeEnd() const;
uint32_t newSelectionStart() const;
uint32_t newSelectionEnd() const;
const AtomicString& InterfaceName() const override;
// member variables to keep track of the event parameters
private:
String update_text_;
uint32_t update_range_start_ = 0;
uint32_t update_range_end_ = 0;
uint32_t new_selection_start_ = 0;
uint32_t new_selection_end_ = 0;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_EDITING_IME_TEXT_UPDATE_EVENT_H_