| 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..4e54f9e638668a2b09a994b45e0a31e4fb37fc8c 100644
|
| --- a/components/autofill/content/renderer/page_click_tracker.cc
|
| +++ b/components/autofill/content/renderer/page_click_tracker.cc
|
| @@ -4,13 +4,9 @@
|
|
|
| #include "components/autofill/content/renderer/page_click_tracker.h"
|
|
|
| -#include "base/bind.h"
|
| -#include "base/message_loop/message_loop.h"
|
| #include "components/autofill/content/renderer/form_autofill_util.h"
|
| #include "components/autofill/content/renderer/page_click_listener.h"
|
| #include "content/public/renderer/render_view.h"
|
| -#include "third_party/WebKit/public/platform/WebString.h"
|
| -#include "third_party/WebKit/public/web/WebDOMMouseEvent.h"
|
| #include "third_party/WebKit/public/web/WebDocument.h"
|
| #include "third_party/WebKit/public/web/WebInputElement.h"
|
| #include "third_party/WebKit/public/web/WebInputEvent.h"
|
| @@ -18,19 +14,13 @@
|
| #include "third_party/WebKit/public/web/WebTextAreaElement.h"
|
| #include "third_party/WebKit/public/web/WebView.h"
|
|
|
| -using blink::WebDOMEvent;
|
| -using blink::WebDOMMouseEvent;
|
| using blink::WebElement;
|
| -using blink::WebFormControlElement;
|
| -using blink::WebFrame;
|
| using blink::WebGestureEvent;
|
| using blink::WebInputElement;
|
| using blink::WebInputEvent;
|
| using blink::WebMouseEvent;
|
| using blink::WebNode;
|
| -using blink::WebString;
|
| using blink::WebTextAreaElement;
|
| -using blink::WebView;
|
|
|
| namespace {
|
|
|
| @@ -68,8 +58,7 @@ PageClickTracker::PageClickTracker(content::RenderView* render_view,
|
| PageClickListener* listener)
|
| : content::RenderViewObserver(render_view),
|
| was_focused_before_now_(false),
|
| - listener_(listener),
|
| - weak_ptr_factory_(this) {
|
| + listener_(listener) {
|
| }
|
|
|
| PageClickTracker::~PageClickTracker() {
|
| @@ -88,50 +77,48 @@ void PageClickTracker::DidHandleMouseEvent(const WebMouseEvent& event) {
|
| PotentialActivationAt(event.x, event.y);
|
| }
|
|
|
| -void PageClickTracker::DidHandleGestureEvent(
|
| - const blink::WebGestureEvent& event) {
|
| - if (event.type != blink::WebGestureEvent::GestureTap)
|
| +void PageClickTracker::DidHandleGestureEvent(const WebGestureEvent& event) {
|
| + if (event.type != WebGestureEvent::GestureTap)
|
| return;
|
|
|
| PotentialActivationAt(event.x, event.y);
|
| }
|
|
|
| -void PageClickTracker::FocusedNodeChanged(const blink::WebNode& node) {
|
| +void PageClickTracker::FocusedNodeChanged(const 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())
|
| - return;
|
| +void PageClickTracker::FocusChangeComplete() {
|
| + if (!clicked_node_.isNull()) {
|
| + const WebInputElement input_element = GetTextWebInputElement(clicked_node_);
|
| + if (!input_element.isNull()) {
|
| + listener_->FormControlElementClicked(input_element,
|
| + was_focused_before_now_);
|
| + } else {
|
| + const WebTextAreaElement textarea_element =
|
| + GetWebTextAreaElement(clicked_node_);
|
| + if (!textarea_element.isNull()) {
|
| + listener_->FormControlElementClicked(textarea_element,
|
| + was_focused_before_now_);
|
| + }
|
| + }
|
| + }
|
|
|
| - if (!render_view()->NodeContainsPoint(focused_node, gfx::Point(x, y)))
|
| - return;
|
| + clicked_node_.reset();
|
| + was_focused_before_now_ = true;
|
| +}
|
|
|
| - const WebInputElement input_element = GetTextWebInputElement(focused_node);
|
| - if (!input_element.isNull()) {
|
| - listener_->FormControlElementClicked(input_element,
|
| - was_focused_before_now_);
|
| +void PageClickTracker::PotentialActivationAt(int x, int y) {
|
| + WebElement focused_element = render_view()->GetFocusedElement();
|
| + if (focused_element.isNull())
|
| return;
|
| - }
|
|
|
| - const WebTextAreaElement textarea_element =
|
| - GetWebTextAreaElement(focused_node);
|
| - if (!textarea_element.isNull()) {
|
| - listener_->FormControlElementClicked(textarea_element,
|
| - was_focused_before_now_);
|
| + if (!GetScaledBoundingBox(render_view()->GetWebView()->pageScaleFactor(),
|
| + &focused_element).Contains(x, y)) {
|
| + return;
|
| }
|
| -}
|
|
|
| -void PageClickTracker::SetWasFocused() {
|
| - was_focused_before_now_ = true;
|
| + clicked_node_ = focused_element;
|
| }
|
|
|
| } // namespace autofill
|
|
|