Index: components/autofill/content/renderer/page_click_tracker.cc |
diff --git a/components/autofill/content/renderer/page_click_tracker.cc b/components/autofill/content/renderer/page_click_tracker.cc |
index 14ceda82fd5420864ff561f546dbe7aeb7f84229..cc8db9d27b4c04b19428867dc2812124b3a77f09 100644 |
--- a/components/autofill/content/renderer/page_click_tracker.cc |
+++ b/components/autofill/content/renderer/page_click_tracker.cc |
@@ -85,7 +85,7 @@ void PageClickTracker::DidHandleMouseEvent(const WebMouseEvent& event) { |
return; |
} |
- PotentialActivationAt(event.x, event.y); |
+ activated_node_ = render_view()->GetFocusedElement(); |
} |
void PageClickTracker::DidHandleGestureEvent( |
@@ -93,45 +93,36 @@ void PageClickTracker::DidHandleGestureEvent( |
if (event.type != blink::WebGestureEvent::GestureTap) |
return; |
- PotentialActivationAt(event.x, event.y); |
+ activated_node_ = render_view()->GetFocusedElement(); |
} |
void PageClickTracker::FocusedNodeChanged(const blink::WebNode& node) { |
was_focused_before_now_ = false; |
- // If the focus change was a result of handling a click or tap, we'll soon get |
- // an associated event. Reset |was_focused_before_now_| to true only after the |
- // message loop unwinds. |
- base::MessageLoop::current()->PostTask( |
- FROM_HERE, |
- base::Bind(&PageClickTracker::SetWasFocused, |
- weak_ptr_factory_.GetWeakPtr())); |
} |
-void PageClickTracker::PotentialActivationAt(int x, int y) { |
- blink::WebNode focused_node = render_view()->GetFocusedElement(); |
- if (focused_node.isNull()) |
+void PageClickTracker::FocusChangeComplete() { |
+ if (activated_node_.isNull()) |
return; |
- if (!render_view()->NodeContainsPoint(focused_node, gfx::Point(x, y))) |
- return; |
+ NodeActivation(activated_node_); |
+ activated_node_.reset(); |
+} |
- const WebInputElement input_element = GetTextWebInputElement(focused_node); |
+void PageClickTracker::NodeActivation(const blink::WebNode& node) { |
+ const WebInputElement input_element = GetTextWebInputElement(node); |
if (!input_element.isNull()) { |
listener_->FormControlElementClicked(input_element, |
was_focused_before_now_); |
+ was_focused_before_now_ = true; |
return; |
} |
- const WebTextAreaElement textarea_element = |
- GetWebTextAreaElement(focused_node); |
+ const WebTextAreaElement textarea_element = GetWebTextAreaElement(node); |
if (!textarea_element.isNull()) { |
listener_->FormControlElementClicked(textarea_element, |
was_focused_before_now_); |
+ was_focused_before_now_ = true; |
} |
} |
-void PageClickTracker::SetWasFocused() { |
- was_focused_before_now_ = true; |
-} |
- |
} // namespace autofill |