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

Side by Side Diff: components/autofill/content/renderer/page_click_tracker.cc

Issue 866633002: partial PageClickTracker migration to RenderFrameObserver (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: update spellcheker 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/autofill/content/renderer/page_click_tracker.h" 5 #include "components/autofill/content/renderer/page_click_tracker.h"
6 6
7 #include "components/autofill/content/renderer/form_autofill_util.h" 7 #include "components/autofill/content/renderer/form_autofill_util.h"
8 #include "components/autofill/content/renderer/page_click_listener.h" 8 #include "components/autofill/content/renderer/page_click_listener.h"
9 #include "content/public/renderer/render_frame.h"
9 #include "content/public/renderer/render_view.h" 10 #include "content/public/renderer/render_view.h"
10 #include "third_party/WebKit/public/web/WebDocument.h" 11 #include "third_party/WebKit/public/web/WebDocument.h"
11 #include "third_party/WebKit/public/web/WebInputElement.h" 12 #include "third_party/WebKit/public/web/WebInputElement.h"
12 #include "third_party/WebKit/public/web/WebInputEvent.h" 13 #include "third_party/WebKit/public/web/WebInputEvent.h"
13 #include "third_party/WebKit/public/web/WebLocalFrame.h" 14 #include "third_party/WebKit/public/web/WebLocalFrame.h"
14 #include "third_party/WebKit/public/web/WebTextAreaElement.h" 15 #include "third_party/WebKit/public/web/WebTextAreaElement.h"
15 #include "third_party/WebKit/public/web/WebView.h" 16 #include "third_party/WebKit/public/web/WebView.h"
16 17
17 using blink::WebElement; 18 using blink::WebElement;
18 using blink::WebGestureEvent; 19 using blink::WebGestureEvent;
(...skipping 28 matching lines...) Expand all
47 const WebElement element = node.toConst<WebElement>(); 48 const WebElement element = node.toConst<WebElement>();
48 if (!element.hasHTMLTagName("textarea")) 49 if (!element.hasHTMLTagName("textarea"))
49 return WebTextAreaElement(); 50 return WebTextAreaElement();
50 return element.toConst<WebTextAreaElement>(); 51 return element.toConst<WebTextAreaElement>();
51 } 52 }
52 53
53 } // namespace 54 } // namespace
54 55
55 namespace autofill { 56 namespace autofill {
56 57
57 PageClickTracker::PageClickTracker(content::RenderView* render_view, 58 PageClickTracker::PageClickTracker(content::RenderFrame* render_frame,
58 PageClickListener* listener) 59 PageClickListener* listener)
59 : content::RenderViewObserver(render_view), 60 : content::RenderFrameObserver(render_frame),
61 focused_node_was_last_clicked_(false),
60 was_focused_before_now_(false), 62 was_focused_before_now_(false),
61 listener_(listener) { 63 listener_(listener),
64 legacy_(this) {
62 } 65 }
63 66
64 PageClickTracker::~PageClickTracker() { 67 PageClickTracker::~PageClickTracker() {
65 } 68 }
66 69
67 void PageClickTracker::OnDestruct() { 70 void PageClickTracker::OnDestruct() {
68 // No-op. Don't delete |this|. 71 // No-op. Don't delete |this|.
69 } 72 }
70 73
71 void PageClickTracker::DidHandleMouseEvent(const WebMouseEvent& event) { 74 void PageClickTracker::DidHandleMouseEvent(const WebMouseEvent& event) {
(...skipping 10 matching lines...) Expand all
82 return; 85 return;
83 86
84 PotentialActivationAt(event.x, event.y); 87 PotentialActivationAt(event.x, event.y);
85 } 88 }
86 89
87 void PageClickTracker::FocusedNodeChanged(const WebNode& node) { 90 void PageClickTracker::FocusedNodeChanged(const WebNode& node) {
88 was_focused_before_now_ = false; 91 was_focused_before_now_ = false;
89 } 92 }
90 93
91 void PageClickTracker::FocusChangeComplete() { 94 void PageClickTracker::FocusChangeComplete() {
92 if (!clicked_node_.isNull()) { 95 if (!focused_node_was_last_clicked_)
93 const WebInputElement input_element = GetTextWebInputElement(clicked_node_); 96 return;
97
98 blink::WebNode focused_node = render_frame()->GetFocusedElement();
99 if (!focused_node.isNull()) {
100 const WebInputElement input_element = GetTextWebInputElement(focused_node);
94 if (!input_element.isNull()) { 101 if (!input_element.isNull()) {
95 listener_->FormControlElementClicked(input_element, 102 listener_->FormControlElementClicked(input_element,
96 was_focused_before_now_); 103 was_focused_before_now_);
97 } else { 104 } else {
98 const WebTextAreaElement textarea_element = 105 const WebTextAreaElement textarea_element =
99 GetWebTextAreaElement(clicked_node_); 106 GetWebTextAreaElement(focused_node);
100 if (!textarea_element.isNull()) { 107 if (!textarea_element.isNull()) {
101 listener_->FormControlElementClicked(textarea_element, 108 listener_->FormControlElementClicked(textarea_element,
102 was_focused_before_now_); 109 was_focused_before_now_);
103 } 110 }
104 } 111 }
105 } 112 }
106 113
107 clicked_node_.reset();
108 was_focused_before_now_ = true; 114 was_focused_before_now_ = true;
109 } 115 }
110 116
111 void PageClickTracker::PotentialActivationAt(int x, int y) { 117 void PageClickTracker::PotentialActivationAt(int x, int y) {
112 WebElement focused_element = render_view()->GetFocusedElement(); 118 focused_node_was_last_clicked_ = false;
119
120 blink::WebElement focused_element = render_frame()->GetFocusedElement();
113 if (focused_element.isNull()) 121 if (focused_element.isNull())
114 return; 122 return;
115 123
116 if (!GetScaledBoundingBox(render_view()->GetWebView()->pageScaleFactor(), 124 if (!GetScaledBoundingBox(
117 &focused_element).Contains(x, y)) { 125 render_frame()->GetRenderView()->GetWebView()->pageScaleFactor(),
126 &focused_element).Contains(x, y)) {
118 return; 127 return;
119 } 128 }
120 129
121 clicked_node_ = focused_element; 130 focused_node_was_last_clicked_ = true;
131 }
132
133 // PageClickTracker::Legacy ----------------------------------------------------
134
135 PageClickTracker::Legacy::Legacy(PageClickTracker* tracker)
136 : content::RenderViewObserver(tracker->render_frame()->GetRenderView()),
137 tracker_(tracker) {
138 }
139
140 void PageClickTracker::Legacy::OnDestruct() {
141 // No-op. Don't delete |this|.
142 }
143
144 void PageClickTracker::Legacy::DidHandleMouseEvent(
145 const blink::WebMouseEvent& event) {
146 tracker_->DidHandleMouseEvent(event);
147 }
148
149 void PageClickTracker::Legacy::DidHandleGestureEvent(
150 const blink::WebGestureEvent& event) {
151 tracker_->DidHandleGestureEvent(event);
152 }
153
154 void PageClickTracker::Legacy::FocusChangeComplete() {
155 tracker_->FocusChangeComplete();
122 } 156 }
123 157
124 } // namespace autofill 158 } // namespace autofill
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698