summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp')
-rw-r--r--chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp43
1 files changed, 39 insertions, 4 deletions
diff --git a/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp b/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp
index f4ecff6596f..ce1b9f7e983 100644
--- a/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp
+++ b/chromium/third_party/WebKit/Source/core/events/CompositionEvent.cpp
@@ -27,8 +27,6 @@
#include "config.h"
#include "core/events/CompositionEvent.h"
-#include "core/events/ThreadLocalEventNames.h"
-
namespace WebCore {
CompositionEventInit::CompositionEventInit()
@@ -36,29 +34,38 @@ CompositionEventInit::CompositionEventInit()
}
CompositionEvent::CompositionEvent()
+ : m_activeSegmentStart(0)
+ , m_activeSegmentEnd(0)
{
ScriptWrappable::init(this);
+ initializeSegments();
}
-CompositionEvent::CompositionEvent(const AtomicString& type, PassRefPtr<AbstractView> view, const String& data)
+CompositionEvent::CompositionEvent(const AtomicString& type, PassRefPtrWillBeRawPtr<AbstractView> view, const String& data, const Vector<CompositionUnderline>& underlines)
: UIEvent(type, true, true, view, 0)
, m_data(data)
+ , m_activeSegmentStart(0)
+ , m_activeSegmentEnd(0)
{
ScriptWrappable::init(this);
+ initializeSegments(&underlines);
}
CompositionEvent::CompositionEvent(const AtomicString& type, const CompositionEventInit& initializer)
: UIEvent(type, initializer)
, m_data(initializer.data)
+ , m_activeSegmentStart(0)
+ , m_activeSegmentEnd(0)
{
ScriptWrappable::init(this);
+ initializeSegments();
}
CompositionEvent::~CompositionEvent()
{
}
-void CompositionEvent::initCompositionEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtr<AbstractView> view, const String& data)
+void CompositionEvent::initCompositionEvent(const AtomicString& type, bool canBubble, bool cancelable, PassRefPtrWillBeRawPtr<AbstractView> view, const String& data)
{
if (dispatched())
return;
@@ -66,6 +73,29 @@ void CompositionEvent::initCompositionEvent(const AtomicString& type, bool canBu
initUIEvent(type, canBubble, cancelable, view, 0);
m_data = data;
+ initializeSegments();
+}
+
+void CompositionEvent::initializeSegments(const Vector<CompositionUnderline>* underlines)
+{
+ m_activeSegmentStart = 0;
+ m_activeSegmentEnd = m_data.length();
+
+ if (!underlines || !underlines->size()) {
+ m_segments.append(0);
+ return;
+ }
+
+ for (size_t i = 0; i < underlines->size(); ++i) {
+ if (underlines->at(i).thick) {
+ m_activeSegmentStart = underlines->at(i).startOffset;
+ m_activeSegmentEnd = underlines->at(i).endOffset;
+ break;
+ }
+ }
+
+ for (size_t i = 0; i < underlines->size(); ++i)
+ m_segments.append(underlines->at(i).startOffset);
}
const AtomicString& CompositionEvent::interfaceName() const
@@ -73,4 +103,9 @@ const AtomicString& CompositionEvent::interfaceName() const
return EventNames::CompositionEvent;
}
+void CompositionEvent::trace(Visitor* visitor)
+{
+ UIEvent::trace(visitor);
+}
+
} // namespace WebCore