Index: third_party/WebKit/Source/core/editing/FrameSelection.cpp |
diff --git a/third_party/WebKit/Source/core/editing/FrameSelection.cpp b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
index 91eca913ae3b82fd15416100e242ca674fee44bd..aba38d18efb5d36d9ad2213ebec0f6879bc190ba 100644 |
--- a/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
+++ b/third_party/WebKit/Source/core/editing/FrameSelection.cpp |
@@ -434,15 +434,21 @@ bool FrameSelection::SelectionHasFocus() const { |
return false; |
// No focused element means document root has focus. |
- const Element* const focused_element = GetDocument().FocusedElement() |
- ? GetDocument().FocusedElement() |
- : GetDocument().documentElement(); |
+ Element* const focused_element = GetDocument().FocusedElement() |
+ ? GetDocument().FocusedElement() |
+ : GetDocument().documentElement(); |
if (!focused_element) |
return false; |
if (focused_element->IsTextControl()) |
return focused_element->ContainsIncludingHostElements(*current); |
+ // Selection has focus if it contains the focused element. |
+ const PositionInFlatTree focused_position(focused_element, 0); |
yosin_UTC9
2017/05/23 01:15:50
It is better to use PositionInFlatTree::FirstPosit
|
+ if (ComputeVisibleSelectionInFlatTree().Start() <= focused_position && |
+ ComputeVisibleSelectionInFlatTree().end() >= focused_position) |
+ return true; |
+ |
bool has_editable_style = HasEditableStyle(*current); |
do { |
// If the selection is within an editable sub tree and that sub tree |