| // Copyright 2015 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 WebSelection_h |
| #define WebSelection_h |
| |
| #include "../platform/WebCommon.h" |
| #include "../platform/WebSelectionBound.h" |
| |
| namespace blink { |
| |
| struct CompositedSelection; |
| |
| // The active selection region, containing compositing data for the selection |
| // end points as well as metadata for the selection region. |
| class BLINK_EXPORT WebSelection { |
| public: |
| enum SelectionType { NoSelection, CaretSelection, RangeSelection }; |
| |
| #if INSIDE_BLINK |
| explicit WebSelection(const CompositedSelection&); |
| #endif |
| WebSelection(const WebSelection&); |
| |
| const WebSelectionBound& start() const { return m_start; } |
| const WebSelectionBound& end() const { return m_end; } |
| |
| bool isNone() const { return selectionType() == NoSelection; } |
| bool isCaret() const { return selectionType() == CaretSelection; } |
| bool isRange() const { return selectionType() == RangeSelection; } |
| |
| bool isEditable() const { return m_isEditable; } |
| bool isEmptyTextFormControl() const { return m_isEmptyTextFormControl; } |
| |
| private: |
| SelectionType selectionType() const { return m_selectionType; } |
| |
| SelectionType m_selectionType; |
| |
| WebSelectionBound m_start; |
| WebSelectionBound m_end; |
| |
| // Whether the selection region consists of editable text. |
| bool m_isEditable; |
| |
| // Whether the selection resides in an empty text form control. Note that |
| // this only applies to caret-type selections. |
| bool m_isEmptyTextFormControl; |
| }; |
| |
| } // namespace blink |
| |
| #endif // WebSelection_h |