Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / public / web / WebSelection.h
blob1c334770580b70eece5ba1345b66ff6a363365fd
1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef WebSelection_h
6 #define WebSelection_h
8 #include "../platform/WebCommon.h"
9 #include "../platform/WebSelectionBound.h"
11 namespace blink {
13 struct CompositedSelection;
15 // The active selection region, containing compositing data for the selection
16 // end points as well as metadata for the selection region.
17 class BLINK_EXPORT WebSelection {
18 public:
19 enum SelectionType { NoSelection, CaretSelection, RangeSelection };
21 #if INSIDE_BLINK
22 explicit WebSelection(const CompositedSelection&);
23 #endif
24 WebSelection(const WebSelection&);
26 const WebSelectionBound& start() const { return m_start; }
27 const WebSelectionBound& end() const { return m_end; }
29 bool isNone() const { return selectionType() == NoSelection; }
30 bool isCaret() const { return selectionType() == CaretSelection; }
31 bool isRange() const { return selectionType() == RangeSelection; }
33 bool isEditable() const { return m_isEditable; }
34 bool isEmptyTextFormControl() const { return m_isEmptyTextFormControl; }
36 private:
37 SelectionType selectionType() const { return m_selectionType; }
39 SelectionType m_selectionType;
41 WebSelectionBound m_start;
42 WebSelectionBound m_end;
44 // Whether the selection region consists of editable text.
45 bool m_isEditable;
47 // Whether the selection resides in an empty text form control. Note that
48 // this only applies to caret-type selections.
49 bool m_isEmptyTextFormControl;
52 } // namespace blink
54 #endif // WebSelection_h