1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
// Copyright 2016 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_EVENTS_INPUT_EVENT_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_INPUT_EVENT_H_
#include "third_party/blink/renderer/bindings/core/v8/v8_input_event_init.h"
#include "third_party/blink/renderer/core/clipboard/data_transfer.h"
#include "third_party/blink/renderer/core/dom/range.h"
#include "third_party/blink/renderer/core/dom/static_range.h"
#include "third_party/blink/renderer/core/events/ui_event.h"
namespace blink {
class InputEvent final : public UIEvent {
DEFINE_WRAPPERTYPEINFO();
public:
static InputEvent* Create(const AtomicString& type,
const InputEventInit* initializer) {
return MakeGarbageCollected<InputEvent>(type, initializer);
}
// https://w3c.github.io/input-events/#h-interface-inputevent-attributes
enum class InputType {
kNone,
// Insertion.
kInsertText,
kInsertLineBreak,
kInsertParagraph,
kInsertOrderedList,
kInsertUnorderedList,
kInsertHorizontalRule,
kInsertFromPaste,
kInsertFromDrop,
kInsertFromYank,
kInsertTranspose,
kInsertReplacementText,
kInsertCompositionText,
// Deletion.
kDeleteWordBackward,
kDeleteWordForward,
kDeleteSoftLineBackward,
kDeleteSoftLineForward,
kDeleteHardLineBackward,
kDeleteHardLineForward,
kDeleteContentBackward,
kDeleteContentForward,
kDeleteByCut,
kDeleteByDrag,
// History.
kHistoryUndo,
kHistoryRedo,
// Formatting.
kFormatBold,
kFormatItalic,
kFormatUnderline,
kFormatStrikeThrough,
kFormatSuperscript,
kFormatSubscript,
kFormatJustifyCenter,
kFormatJustifyFull,
kFormatJustifyRight,
kFormatJustifyLeft,
kFormatIndent,
kFormatOutdent,
kFormatRemove,
kFormatSetBlockTextDirection,
// Add new input types immediately above this line.
kNumberOfInputTypes,
};
enum EventCancelable : bool {
kNotCancelable = false,
kIsCancelable = true,
};
enum EventIsComposing : bool {
kNotComposing = false,
kIsComposing = true,
};
static InputEvent* CreateBeforeInput(InputType,
const String& data,
EventCancelable,
EventIsComposing,
const StaticRangeVector*);
static InputEvent* CreateBeforeInput(InputType,
DataTransfer*,
EventCancelable,
EventIsComposing,
const StaticRangeVector*);
static InputEvent* CreateInput(InputType,
const String& data,
EventIsComposing,
const StaticRangeVector*);
InputEvent(const AtomicString&, const InputEventInit*);
String inputType() const;
const String& data() const { return data_; }
DataTransfer* dataTransfer() const { return data_transfer_.Get(); }
bool isComposing() const { return is_composing_; }
// Returns a copy of target ranges during event dispatch, and returns an empty
// vector after dispatch.
StaticRangeVector getTargetRanges() const;
bool IsInputEvent() const override;
DispatchEventResult DispatchEvent(EventDispatcher&) override;
void Trace(Visitor*) override;
private:
InputType input_type_;
String data_;
Member<DataTransfer> data_transfer_;
bool is_composing_;
// We have to stored |Range| internally and only expose |StaticRange|, please
// see comments in |dispatchEvent()|.
RangeVector ranges_;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_INPUT_EVENT_H_
|