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

Side by Side Diff: chrome/browser/automation/automation_tab_helper.cc

Issue 10384023: Determine the element location and click synchronously on the renderer. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/automation/automation_tab_helper.h" 5 #include "chrome/browser/automation/automation_tab_helper.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "chrome/common/automation_messages.h" 9 #include "chrome/common/automation_messages.h"
10 #include "content/public/browser/web_contents.h" 10 #include "content/public/browser/web_contents.h"
11 #include "ipc/ipc_message.h" 11 #include "ipc/ipc_message.h"
12 #include "ipc/ipc_message_macros.h" 12 #include "ipc/ipc_message_macros.h"
13 #include "ui/gfx/point.h"
13 #include "ui/gfx/size.h" 14 #include "ui/gfx/size.h"
14 15
15 using content::WebContents; 16 using content::WebContents;
16 17
17 TabEventObserver::TabEventObserver() { } 18 TabEventObserver::TabEventObserver() { }
18 19
19 TabEventObserver::~TabEventObserver() { 20 TabEventObserver::~TabEventObserver() {
20 for (size_t i = 0; i < event_sources_.size(); ++i) { 21 for (size_t i = 0; i < event_sources_.size(); ++i) {
21 if (event_sources_[i]) 22 if (event_sources_[i])
22 event_sources_[i]->RemoveObserver(this); 23 event_sources_[i]->RemoveObserver(this);
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
54 void AutomationTabHelper::SnapshotEntirePage() { 55 void AutomationTabHelper::SnapshotEntirePage() {
55 Send(new AutomationMsg_SnapshotEntirePage(routing_id())); 56 Send(new AutomationMsg_SnapshotEntirePage(routing_id()));
56 } 57 }
57 58
58 #if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS)) 59 #if !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
59 void AutomationTabHelper::HeapProfilerDump(const std::string& reason) { 60 void AutomationTabHelper::HeapProfilerDump(const std::string& reason) {
60 Send(new AutomationMsg_HeapProfilerDump(routing_id(), reason)); 61 Send(new AutomationMsg_HeapProfilerDump(routing_id(), reason));
61 } 62 }
62 #endif // !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS)) 63 #endif // !defined(NO_TCMALLOC) && (defined(OS_LINUX) || defined(OS_CHROMEOS))
63 64
65 void AutomationTabHelper::ProcessMouseEvent(
66 const AutomationMouseEvent& event) {
67 Send(new AutomationMsg_ProcessMouseEvent(routing_id(), event));
68 }
69
64 bool AutomationTabHelper::has_pending_loads() const { 70 bool AutomationTabHelper::has_pending_loads() const {
65 return is_loading_ || !pending_client_redirects_.empty(); 71 return is_loading_ || !pending_client_redirects_.empty();
66 } 72 }
67 73
68 void AutomationTabHelper::DidStartLoading() { 74 void AutomationTabHelper::DidStartLoading() {
69 if (is_loading_) { 75 if (is_loading_) {
70 // DidStartLoading is often called twice. Once when the renderer sends a 76 // DidStartLoading is often called twice. Once when the renderer sends a
71 // load start message, and once when the browser calls it directly as a 77 // load start message, and once when the browser calls it directly as a
72 // result of some user-initiated navigation. 78 // result of some user-initiated navigation.
73 VLOG(1) << "Received DidStartLoading while loading already started."; 79 VLOG(1) << "Received DidStartLoading while loading already started.";
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 } 118 }
113 119
114 void AutomationTabHelper::OnSnapshotEntirePageACK( 120 void AutomationTabHelper::OnSnapshotEntirePageACK(
115 bool success, 121 bool success,
116 const std::vector<unsigned char>& png_data, 122 const std::vector<unsigned char>& png_data,
117 const std::string& error_msg) { 123 const std::string& error_msg) {
118 FOR_EACH_OBSERVER(TabEventObserver, observers_, 124 FOR_EACH_OBSERVER(TabEventObserver, observers_,
119 OnSnapshotEntirePageACK(success, png_data, error_msg)); 125 OnSnapshotEntirePageACK(success, png_data, error_msg));
120 } 126 }
121 127
128 void AutomationTabHelper::OnWillProcessMouseEventAt(const gfx::Point& point) {
129 FOR_EACH_OBSERVER(TabEventObserver, observers_,
130 OnWillProcessMouseEventAt(point));
131 }
132
133 void AutomationTabHelper::OnProcessMouseEventACK(
134 bool success,
135 const std::string& error_msg) {
136 FOR_EACH_OBSERVER(TabEventObserver, observers_,
137 OnProcessMouseEventACK(success, error_msg));
138 }
139
122 bool AutomationTabHelper::OnMessageReceived(const IPC::Message& message) { 140 bool AutomationTabHelper::OnMessageReceived(const IPC::Message& message) {
123 bool handled = true; 141 bool handled = true;
124 bool msg_is_good = true; 142 bool msg_is_good = true;
125 IPC_BEGIN_MESSAGE_MAP_EX(AutomationTabHelper, message, msg_is_good) 143 IPC_BEGIN_MESSAGE_MAP_EX(AutomationTabHelper, message, msg_is_good)
126 IPC_MESSAGE_HANDLER(AutomationMsg_SnapshotEntirePageACK, 144 IPC_MESSAGE_HANDLER(AutomationMsg_SnapshotEntirePageACK,
127 OnSnapshotEntirePageACK) 145 OnSnapshotEntirePageACK)
146 IPC_MESSAGE_HANDLER(AutomationMsg_WillProcessMouseEventAt,
147 OnWillProcessMouseEventAt)
148 IPC_MESSAGE_HANDLER(AutomationMsg_ProcessMouseEventACK,
149 OnProcessMouseEventACK)
128 IPC_MESSAGE_HANDLER(AutomationMsg_WillPerformClientRedirect, 150 IPC_MESSAGE_HANDLER(AutomationMsg_WillPerformClientRedirect,
129 OnWillPerformClientRedirect) 151 OnWillPerformClientRedirect)
130 IPC_MESSAGE_HANDLER(AutomationMsg_DidCompleteOrCancelClientRedirect, 152 IPC_MESSAGE_HANDLER(AutomationMsg_DidCompleteOrCancelClientRedirect,
131 OnDidCompleteOrCancelClientRedirect) 153 OnDidCompleteOrCancelClientRedirect)
132 IPC_MESSAGE_UNHANDLED(handled = false) 154 IPC_MESSAGE_UNHANDLED(handled = false)
133 IPC_END_MESSAGE_MAP_EX() 155 IPC_END_MESSAGE_MAP_EX()
134 if (!msg_is_good) { 156 if (!msg_is_good) {
135 LOG(ERROR) << "Failed to deserialize an IPC message"; 157 LOG(ERROR) << "Failed to deserialize an IPC message";
136 } 158 }
137 return handled; 159 return handled;
(...skipping 23 matching lines...) Expand all
161 // It is possible that we did not track the redirect becasue it had a non-zero 183 // It is possible that we did not track the redirect becasue it had a non-zero
162 // delay. See the comment in |OnWillPerformClientRedirect|. 184 // delay. See the comment in |OnWillPerformClientRedirect|.
163 if (iter != pending_client_redirects_.end()) { 185 if (iter != pending_client_redirects_.end()) {
164 pending_client_redirects_.erase(iter); 186 pending_client_redirects_.erase(iter);
165 if (!has_pending_loads()) { 187 if (!has_pending_loads()) {
166 FOR_EACH_OBSERVER(TabEventObserver, observers_, 188 FOR_EACH_OBSERVER(TabEventObserver, observers_,
167 OnNoMorePendingLoads(web_contents())); 189 OnNoMorePendingLoads(web_contents()));
168 } 190 }
169 } 191 }
170 } 192 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698