Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1815)

Unified Diff: components/autofill/content/renderer/page_click_tracker.cc

Issue 715733002: [Android] Show autofill popup after animation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
« no previous file with comments | « components/autofill/content/renderer/page_click_tracker.h ('k') | content/browser/renderer_host/compositor_impl_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698