Index: ui/touch_selection/touch_selection_controller.cc |
diff --git a/ui/touch_selection/touch_selection_controller.cc b/ui/touch_selection/touch_selection_controller.cc |
index 540dfee5237bc1bd87b34cd1cf44cdbc54dcfc6d..1c8ceae98b5fe1d7d6508e5a3c254ddf82ba4b9a 100644 |
--- a/ui/touch_selection/touch_selection_controller.cc |
+++ b/ui/touch_selection/touch_selection_controller.cc |
@@ -52,9 +52,8 @@ TouchSelectionController::TouchSelectionController( |
response_pending_input_event_(INPUT_EVENT_TYPE_NONE), |
start_orientation_(TouchHandleOrientation::UNDEFINED), |
end_orientation_(TouchHandleOrientation::UNDEFINED), |
- is_insertion_active_(false), |
+ active_status_(INACTIVE), |
activate_insertion_automatically_(false), |
- is_selection_active_(false), |
activate_selection_automatically_(false), |
selection_empty_(false), |
selection_editable_(false), |
@@ -79,8 +78,7 @@ void TouchSelectionController::OnSelectionBoundsChanged( |
if (!activate_selection_automatically_ && |
!activate_insertion_automatically_) { |
- DCHECK(!is_insertion_active_); |
- DCHECK(!is_selection_active_); |
+ DCHECK_EQ(INACTIVE, active_status_); |
DCHECK_EQ(INPUT_EVENT_TYPE_NONE, response_pending_input_event_); |
return; |
} |
@@ -93,9 +91,9 @@ void TouchSelectionController::OnSelectionBoundsChanged( |
base::AutoReset<InputEventType> auto_reset_response_pending_input_event( |
&response_pending_input_event_, causal_input_event); |
- const bool is_selection_dragging = |
- is_selection_active_ && (start_selection_handle_->is_dragging() || |
- end_selection_handle_->is_dragging()); |
+ const bool is_selection_dragging = active_status_ == SELECTION_ACTIVE && |
+ (start_selection_handle_->is_dragging() || |
+ end_selection_handle_->is_dragging()); |
// It's possible that the bounds temporarily overlap while a selection handle |
// is being dragged, incorrectly reporting a CENTER orientation. |
@@ -128,12 +126,12 @@ void TouchSelectionController::OnSelectionBoundsChanged( |
} |
bool TouchSelectionController::WillHandleTouchEvent(const MotionEvent& event) { |
- if (is_insertion_active_) { |
+ if (active_status_ == INSERTION_ACTIVE) { |
DCHECK(insertion_handle_); |
return insertion_handle_->WillHandleTouchEvent(event); |
} |
- if (is_selection_active_) { |
+ if (active_status_ == SELECTION_ACTIVE) { |
DCHECK(start_selection_handle_); |
DCHECK(end_selection_handle_); |
if (start_selection_handle_->is_dragging()) |
@@ -144,10 +142,10 @@ bool TouchSelectionController::WillHandleTouchEvent(const MotionEvent& event) { |
const gfx::PointF event_pos(event.GetX(), event.GetY()); |
if ((event_pos - GetStartPosition()).LengthSquared() <= |
- (event_pos - GetEndPosition()).LengthSquared()) |
+ (event_pos - GetEndPosition()).LengthSquared()) { |
return start_selection_handle_->WillHandleTouchEvent(event); |
- else |
- return end_selection_handle_->WillHandleTouchEvent(event); |
+ } |
+ return end_selection_handle_->WillHandleTouchEvent(event); |
} |
return false; |
@@ -161,21 +159,22 @@ void TouchSelectionController::OnLongPressEvent() { |
} |
void TouchSelectionController::AllowShowingFromCurrentSelection() { |
- if (is_selection_active_ || is_insertion_active_) |
+ if (active_status_ != INACTIVE) |
return; |
activate_selection_automatically_ = true; |
activate_insertion_automatically_ = true; |
- if (GetStartPosition() != GetEndPosition()) |
+ if (GetStartPosition() != GetEndPosition()) { |
OnSelectionChanged(); |
- else if (start_orientation_ == TouchHandleOrientation::CENTER && |
- selection_editable_) |
+ } else if (start_orientation_ == TouchHandleOrientation::CENTER && |
+ selection_editable_) { |
OnInsertionChanged(); |
+ } |
} |
void TouchSelectionController::OnTapEvent() { |
response_pending_input_event_ = TAP; |
- if (!is_selection_active_) |
+ if (active_status_ != SELECTION_ACTIVE) |
activate_selection_automatically_ = false; |
ShowInsertionHandleAutomatically(); |
if (selection_empty_ && !show_on_tap_for_empty_editable_) |
@@ -197,12 +196,12 @@ void TouchSelectionController::SetTemporarilyHidden(bool hidden) { |
temporarily_hidden_ = hidden; |
TouchHandle::AnimationStyle animation_style = GetAnimationStyle(true); |
- if (is_selection_active_) { |
+ if (active_status_ == SELECTION_ACTIVE) { |
start_selection_handle_->SetVisible(GetStartVisible(), animation_style); |
end_selection_handle_->SetVisible(GetEndVisible(), animation_style); |
- } |
- if (is_insertion_active_) |
+ } else if (active_status_ == INSERTION_ACTIVE) { |
insertion_handle_->SetVisible(GetStartVisible(), animation_style); |
+ } |
} |
void TouchSelectionController::OnSelectionEditable(bool editable) { |
@@ -222,10 +221,10 @@ void TouchSelectionController::OnSelectionEmpty(bool empty) { |
} |
bool TouchSelectionController::Animate(base::TimeTicks frame_time) { |
- if (is_insertion_active_) |
+ if (active_status_ == INSERTION_ACTIVE) |
return insertion_handle_->Animate(frame_time); |
- if (is_selection_active_) { |
+ if (active_status_ == SELECTION_ACTIVE) { |
bool needs_animate = start_selection_handle_->Animate(frame_time); |
needs_animate |= end_selection_handle_->Animate(frame_time); |
return needs_animate; |
@@ -236,7 +235,7 @@ bool TouchSelectionController::Animate(base::TimeTicks frame_time) { |
gfx::RectF TouchSelectionController::GetRectBetweenBounds() const { |
// Short-circuit for efficiency. |
- if (!is_insertion_active_ && !is_selection_active_) |
+ if (active_status_ == INACTIVE) |
return gfx::RectF(); |
if (start_.visible() && !end_.visible()) |
@@ -250,17 +249,17 @@ gfx::RectF TouchSelectionController::GetRectBetweenBounds() const { |
} |
gfx::RectF TouchSelectionController::GetStartHandleRect() const { |
- if (is_insertion_active_) |
+ if (active_status_ == INSERTION_ACTIVE) |
return insertion_handle_->GetVisibleBounds(); |
- if (is_selection_active_) |
+ if (active_status_ == SELECTION_ACTIVE) |
return start_selection_handle_->GetVisibleBounds(); |
return gfx::RectF(); |
} |
gfx::RectF TouchSelectionController::GetEndHandleRect() const { |
- if (is_insertion_active_) |
+ if (active_status_ == INSERTION_ACTIVE) |
return insertion_handle_->GetVisibleBounds(); |
- if (is_selection_active_) |
+ if (active_status_ == SELECTION_ACTIVE) |
return end_selection_handle_->GetVisibleBounds(); |
return gfx::RectF(); |
} |
@@ -303,11 +302,10 @@ void TouchSelectionController::OnHandleDragUpdate(const TouchHandle& handle, |
? GetStartLineOffset() |
: GetEndLineOffset(); |
gfx::PointF line_position = position + line_offset; |
- if (&handle == insertion_handle_.get()) { |
+ if (&handle == insertion_handle_.get()) |
client_->MoveCaret(line_position); |
- } else { |
+ else |
client_->MoveRangeSelectionExtent(line_position); |
- } |
} |
void TouchSelectionController::OnHandleDragEnd(const TouchHandle& handle) { |
@@ -364,9 +362,9 @@ void TouchSelectionController::OnInsertionChanged() { |
if (!activate_insertion_automatically_) |
return; |
- const bool was_active = is_insertion_active_; |
+ const bool was_active = active_status_ == INSERTION_ACTIVE; |
const gfx::PointF position = GetStartPosition(); |
- if (!is_insertion_active_) |
+ if (!was_active) |
ActivateInsertion(); |
else |
client_->OnSelectionEvent(INSERTION_MOVED); |
@@ -382,8 +380,8 @@ void TouchSelectionController::OnSelectionChanged() { |
if (!activate_selection_automatically_) |
return; |
- const bool was_active = is_selection_active_; |
- if (!is_selection_active_ || response_pending_input_event_ == LONG_PRESS) |
+ const bool was_active = active_status_ == SELECTION_ACTIVE; |
+ if (!was_active || response_pending_input_event_ == LONG_PRESS) |
ActivateSelection(); |
else |
client_->OnSelectionEvent(SELECTION_MOVED); |
@@ -397,30 +395,30 @@ void TouchSelectionController::OnSelectionChanged() { |
} |
void TouchSelectionController::ActivateInsertion() { |
- DCHECK(!is_selection_active_); |
+ DCHECK_NE(SELECTION_ACTIVE, active_status_); |
if (!insertion_handle_) |
insertion_handle_.reset( |
new TouchHandle(this, TouchHandleOrientation::CENTER)); |
- if (!is_insertion_active_) { |
- is_insertion_active_ = true; |
+ if (active_status_ == INACTIVE) { |
+ active_status_ = INSERTION_ACTIVE; |
insertion_handle_->SetEnabled(true); |
client_->OnSelectionEvent(INSERTION_SHOWN); |
} |
} |
void TouchSelectionController::DeactivateInsertion() { |
- if (!is_insertion_active_) |
+ if (active_status_ != INSERTION_ACTIVE) |
return; |
DCHECK(insertion_handle_); |
- is_insertion_active_ = false; |
+ active_status_ = INACTIVE; |
insertion_handle_->SetEnabled(false); |
client_->OnSelectionEvent(INSERTION_CLEARED); |
} |
void TouchSelectionController::ActivateSelection() { |
- DCHECK(!is_insertion_active_); |
+ DCHECK_NE(INSERTION_ACTIVE, active_status_); |
if (!start_selection_handle_) { |
start_selection_handle_.reset(new TouchHandle(this, start_orientation_)); |
@@ -439,12 +437,13 @@ void TouchSelectionController::ActivateSelection() { |
// As a long press received while a selection is already active may trigger |
// an entirely new selection, notify the client but avoid sending an |
// intervening SELECTION_CLEARED update to avoid unnecessary state changes. |
- if (!is_selection_active_ || response_pending_input_event_ == LONG_PRESS) { |
- if (is_selection_active_) { |
+ if (active_status_ == INACTIVE || |
+ response_pending_input_event_ == LONG_PRESS) { |
+ if (active_status_ == SELECTION_ACTIVE) { |
// The active selection session finishes with the start of the new one. |
LogSelectionEnd(); |
} |
- is_selection_active_ = true; |
+ active_status_ = SELECTION_ACTIVE; |
selection_handle_dragged_ = false; |
selection_start_time_ = base::TimeTicks::Now(); |
response_pending_input_event_ = INPUT_EVENT_TYPE_NONE; |
@@ -453,19 +452,19 @@ void TouchSelectionController::ActivateSelection() { |
} |
void TouchSelectionController::DeactivateSelection() { |
- if (!is_selection_active_) |
+ if (active_status_ != SELECTION_ACTIVE) |
return; |
DCHECK(start_selection_handle_); |
DCHECK(end_selection_handle_); |
LogSelectionEnd(); |
start_selection_handle_->SetEnabled(false); |
end_selection_handle_->SetEnabled(false); |
- is_selection_active_ = false; |
+ active_status_ = INACTIVE; |
client_->OnSelectionEvent(SELECTION_CLEARED); |
} |
void TouchSelectionController::ResetCachedValuesIfInactive() { |
- if (is_selection_active_ || is_insertion_active_) |
+ if (active_status_ != INACTIVE) |
return; |
start_ = SelectionBound(); |
end_ = SelectionBound(); |