OLD | NEW |
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 "content/shell/browser/shell_devtools_frontend.h" | 5 #include "content/shell/browser/shell_devtools_frontend.h" |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
125 | 125 |
126 void ShellDevToolsFrontend::Activate() { | 126 void ShellDevToolsFrontend::Activate() { |
127 frontend_shell_->ActivateContents(web_contents()); | 127 frontend_shell_->ActivateContents(web_contents()); |
128 } | 128 } |
129 | 129 |
130 void ShellDevToolsFrontend::Focus() { | 130 void ShellDevToolsFrontend::Focus() { |
131 web_contents()->Focus(); | 131 web_contents()->Focus(); |
132 } | 132 } |
133 | 133 |
134 void ShellDevToolsFrontend::InspectElementAt(int x, int y) { | 134 void ShellDevToolsFrontend::InspectElementAt(int x, int y) { |
135 if (agent_host_) | 135 if (agent_host_) { |
136 agent_host_->InspectElement(x, y); | 136 agent_host_->InspectElement(this, x, y); |
| 137 } else { |
| 138 inspect_element_at_x_ = x; |
| 139 inspect_element_at_y_ = y; |
| 140 } |
137 } | 141 } |
138 | 142 |
139 void ShellDevToolsFrontend::Close() { | 143 void ShellDevToolsFrontend::Close() { |
140 frontend_shell_->Close(); | 144 frontend_shell_->Close(); |
141 } | 145 } |
142 | 146 |
143 void ShellDevToolsFrontend::DisconnectFromTarget() { | 147 void ShellDevToolsFrontend::DisconnectFromTarget() { |
144 if (!agent_host_) | 148 if (!agent_host_) |
145 return; | 149 return; |
146 agent_host_->DetachClient(this); | 150 agent_host_->DetachClient(this); |
147 agent_host_ = NULL; | 151 agent_host_ = NULL; |
148 } | 152 } |
149 | 153 |
150 ShellDevToolsFrontend::ShellDevToolsFrontend(Shell* frontend_shell, | 154 ShellDevToolsFrontend::ShellDevToolsFrontend(Shell* frontend_shell, |
151 WebContents* inspected_contents) | 155 WebContents* inspected_contents) |
152 : WebContentsObserver(frontend_shell->web_contents()), | 156 : WebContentsObserver(frontend_shell->web_contents()), |
153 frontend_shell_(frontend_shell), | 157 frontend_shell_(frontend_shell), |
154 inspected_contents_(inspected_contents), | 158 inspected_contents_(inspected_contents), |
| 159 inspect_element_at_x_(-1), |
| 160 inspect_element_at_y_(-1), |
155 weak_factory_(this) { | 161 weak_factory_(this) { |
156 } | 162 } |
157 | 163 |
158 ShellDevToolsFrontend::~ShellDevToolsFrontend() { | 164 ShellDevToolsFrontend::~ShellDevToolsFrontend() { |
159 for (const auto& pair : pending_requests_) | 165 for (const auto& pair : pending_requests_) |
160 delete pair.first; | 166 delete pair.first; |
161 } | 167 } |
162 | 168 |
163 void ShellDevToolsFrontend::RenderViewCreated( | 169 void ShellDevToolsFrontend::RenderViewCreated( |
164 RenderViewHost* render_view_host) { | 170 RenderViewHost* render_view_host) { |
165 if (!frontend_host_) { | 171 if (!frontend_host_) { |
166 frontend_host_.reset(DevToolsFrontendHost::Create( | 172 frontend_host_.reset(DevToolsFrontendHost::Create( |
167 web_contents()->GetMainFrame(), | 173 web_contents()->GetMainFrame(), |
168 base::Bind(&ShellDevToolsFrontend::HandleMessageFromDevToolsFrontend, | 174 base::Bind(&ShellDevToolsFrontend::HandleMessageFromDevToolsFrontend, |
169 base::Unretained(this)))); | 175 base::Unretained(this)))); |
170 } | 176 } |
171 } | 177 } |
172 | 178 |
173 void ShellDevToolsFrontend::DocumentAvailableInMainFrame() { | 179 void ShellDevToolsFrontend::DocumentAvailableInMainFrame() { |
174 agent_host_ = DevToolsAgentHost::GetOrCreateFor(inspected_contents_); | 180 agent_host_ = DevToolsAgentHost::GetOrCreateFor(inspected_contents_); |
175 agent_host_->AttachClient(this); | 181 agent_host_->AttachClient(this); |
| 182 if (inspect_element_at_x_ != -1) { |
| 183 agent_host_->InspectElement( |
| 184 this, inspect_element_at_x_, inspect_element_at_y_); |
| 185 inspect_element_at_x_ = -1; |
| 186 inspect_element_at_y_ = -1; |
| 187 } |
176 } | 188 } |
177 | 189 |
178 void ShellDevToolsFrontend::WebContentsDestroyed() { | 190 void ShellDevToolsFrontend::WebContentsDestroyed() { |
179 if (agent_host_) | 191 if (agent_host_) |
180 agent_host_->DetachClient(this); | 192 agent_host_->DetachClient(this); |
181 delete this; | 193 delete this; |
182 } | 194 } |
183 | 195 |
184 void ShellDevToolsFrontend::HandleMessageFromDevToolsFrontend( | 196 void ShellDevToolsFrontend::HandleMessageFromDevToolsFrontend( |
185 const std::string& message) { | 197 const std::string& message) { |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 CallClientFunction("DevToolsAPI.embedderMessageAck", | 357 CallClientFunction("DevToolsAPI.embedderMessageAck", |
346 &id_value, arg, nullptr); | 358 &id_value, arg, nullptr); |
347 } | 359 } |
348 | 360 |
349 void ShellDevToolsFrontend::AgentHostClosed( | 361 void ShellDevToolsFrontend::AgentHostClosed( |
350 DevToolsAgentHost* agent_host, bool replaced) { | 362 DevToolsAgentHost* agent_host, bool replaced) { |
351 frontend_shell_->Close(); | 363 frontend_shell_->Close(); |
352 } | 364 } |
353 | 365 |
354 } // namespace content | 366 } // namespace content |
OLD | NEW |