Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(750)

Unified Diff: third_party/WebKit/Source/core/editing/markers/DocumentMarker.cpp

Issue 2780313002: [WIP] Refactor DocumentMarker (Closed)
Patch Set: Move accessor methods into derived classes Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/editing/markers/DocumentMarker.cpp
diff --git a/third_party/WebKit/Source/core/editing/markers/DocumentMarker.cpp b/third_party/WebKit/Source/core/editing/markers/DocumentMarker.cpp
index f9fc29dfe8b6fe2da0a00f8a2b445ccdd9b599ab..811f5cce91b510ab8dd3525ae9212824bdd3d825 100644
--- a/third_party/WebKit/Source/core/editing/markers/DocumentMarker.cpp
+++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarker.cpp
@@ -34,143 +34,13 @@
namespace blink {
-DocumentMarkerDetails::~DocumentMarkerDetails() {}
-
-class DocumentMarkerDescription final : public DocumentMarkerDetails {
- public:
- static DocumentMarkerDescription* create(const String&);
-
- const String& description() const { return m_description; }
- bool isDescription() const override { return true; }
-
- private:
- explicit DocumentMarkerDescription(const String& description)
- : m_description(description) {}
-
- String m_description;
-};
-
-DocumentMarkerDescription* DocumentMarkerDescription::create(
- const String& description) {
- return new DocumentMarkerDescription(description);
-}
-
-inline DocumentMarkerDescription* toDocumentMarkerDescription(
- DocumentMarkerDetails* details) {
- if (details && details->isDescription())
- return static_cast<DocumentMarkerDescription*>(details);
- return 0;
-}
-
-class DocumentMarkerTextMatch final : public DocumentMarkerDetails {
- public:
- static DocumentMarkerTextMatch* create(bool);
-
- bool activeMatch() const { return m_match; }
- bool isTextMatch() const override { return true; }
-
- private:
- explicit DocumentMarkerTextMatch(bool match) : m_match(match) {}
-
- bool m_match;
-};
-
-DocumentMarkerTextMatch* DocumentMarkerTextMatch::create(bool match) {
- DEFINE_STATIC_LOCAL(DocumentMarkerTextMatch, trueInstance,
- (new DocumentMarkerTextMatch(true)));
- DEFINE_STATIC_LOCAL(DocumentMarkerTextMatch, falseInstance,
- (new DocumentMarkerTextMatch(false)));
- return match ? &trueInstance : &falseInstance;
-}
-
-inline DocumentMarkerTextMatch* toDocumentMarkerTextMatch(
- DocumentMarkerDetails* details) {
- if (details && details->isTextMatch())
- return static_cast<DocumentMarkerTextMatch*>(details);
- return 0;
-}
-
-class TextCompositionMarkerDetails final : public DocumentMarkerDetails {
- public:
- static TextCompositionMarkerDetails* create(Color underlineColor,
- bool thick,
- Color backgroundColor);
-
- bool isComposition() const override { return true; }
- Color underlineColor() const { return m_underlineColor; }
- bool thick() const { return m_thick; }
- Color backgroundColor() const { return m_backgroundColor; }
-
- private:
- TextCompositionMarkerDetails(Color underlineColor,
- bool thick,
- Color backgroundColor)
- : m_underlineColor(underlineColor),
- m_backgroundColor(backgroundColor),
- m_thick(thick) {}
-
- Color m_underlineColor;
- Color m_backgroundColor;
- bool m_thick;
-};
-
-TextCompositionMarkerDetails* TextCompositionMarkerDetails::create(
- Color underlineColor,
- bool thick,
- Color backgroundColor) {
- return new TextCompositionMarkerDetails(underlineColor, thick,
- backgroundColor);
-}
-
-inline TextCompositionMarkerDetails* toTextCompositionMarkerDetails(
- DocumentMarkerDetails* details) {
- if (details && details->isComposition())
- return static_cast<TextCompositionMarkerDetails*>(details);
- return nullptr;
-}
-
-DocumentMarker* DocumentMarker::clone() const {
- return new DocumentMarker(*this);
-}
-
-DocumentMarker::DocumentMarker(MarkerType type,
- unsigned startOffset,
- unsigned endOffset,
- const String& description)
- : m_type(type),
- m_startOffset(startOffset),
- m_endOffset(endOffset),
- m_details(description.isEmpty()
- ? nullptr
- : DocumentMarkerDescription::create(description)) {
- DCHECK(type != DocumentMarker::TextMatch);
-}
-
-DocumentMarker::DocumentMarker(unsigned startOffset,
- unsigned endOffset,
- bool activeMatch)
- : m_type(DocumentMarker::TextMatch),
- m_startOffset(startOffset),
- m_endOffset(endOffset),
- m_details(DocumentMarkerTextMatch::create(activeMatch)) {}
+DocumentMarker::DocumentMarker(const DocumentMarker& marker)
+ : m_startOffset(marker.startOffset()), m_endOffset(marker.endOffset()) {}
-DocumentMarker::DocumentMarker(unsigned startOffset,
- unsigned endOffset,
- Color underlineColor,
- bool thick,
- Color backgroundColor)
- : m_type(DocumentMarker::Composition),
- m_startOffset(startOffset),
- m_endOffset(endOffset),
- m_details(TextCompositionMarkerDetails::create(underlineColor,
- thick,
- backgroundColor)) {}
+DocumentMarker::~DocumentMarker() {}
-DocumentMarker::DocumentMarker(const DocumentMarker& marker)
- : m_type(marker.type()),
- m_startOffset(marker.startOffset()),
- m_endOffset(marker.endOffset()),
- m_details(marker.details()) {}
+DocumentMarker::DocumentMarker(unsigned startOffset, unsigned endOffset)
+ : m_startOffset(startOffset), m_endOffset(endOffset) {}
Optional<DocumentMarker::MarkerOffsets>
DocumentMarker::computeOffsetsAfterShift(unsigned offset,
@@ -223,47 +93,4 @@ void DocumentMarker::shiftOffsets(int delta) {
m_endOffset += delta;
}
-void DocumentMarker::setActiveMatch(bool active) {
- m_details = DocumentMarkerTextMatch::create(active);
-}
-
-const String& DocumentMarker::description() const {
- if (DocumentMarkerDescription* details =
- toDocumentMarkerDescription(m_details.get()))
- return details->description();
- return emptyString;
-}
-
-bool DocumentMarker::activeMatch() const {
- if (DocumentMarkerTextMatch* details =
- toDocumentMarkerTextMatch(m_details.get()))
- return details->activeMatch();
- return false;
-}
-
-Color DocumentMarker::underlineColor() const {
- if (TextCompositionMarkerDetails* details =
- toTextCompositionMarkerDetails(m_details.get()))
- return details->underlineColor();
- return Color::transparent;
-}
-
-bool DocumentMarker::thick() const {
- if (TextCompositionMarkerDetails* details =
- toTextCompositionMarkerDetails(m_details.get()))
- return details->thick();
- return false;
-}
-
-Color DocumentMarker::backgroundColor() const {
- if (TextCompositionMarkerDetails* details =
- toTextCompositionMarkerDetails(m_details.get()))
- return details->backgroundColor();
- return Color::transparent;
-}
-
-DEFINE_TRACE(DocumentMarker) {
- visitor->trace(m_details);
-}
-
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698