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

Side by Side Diff: content/browser/devtools/render_frame_devtools_agent_host.cc

Issue 884873004: DevTools: rename RenderViewDevToolsAgentHost to RenderFrame*. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 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 (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 "content/browser/devtools/render_view_devtools_agent_host.h" 5 #include "content/browser/devtools/render_frame_devtools_agent_host.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/lazy_instance.h" 9 #include "base/lazy_instance.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
11 #include "content/browser/child_process_security_policy_impl.h" 11 #include "content/browser/child_process_security_policy_impl.h"
12 #include "content/browser/devtools/devtools_manager.h" 12 #include "content/browser/devtools/devtools_manager.h"
13 #include "content/browser/devtools/protocol/devtools_protocol_handler.h" 13 #include "content/browser/devtools/protocol/devtools_protocol_handler.h"
14 #include "content/browser/devtools/protocol/dom_handler.h" 14 #include "content/browser/devtools/protocol/dom_handler.h"
15 #include "content/browser/devtools/protocol/input_handler.h" 15 #include "content/browser/devtools/protocol/input_handler.h"
(...skipping 16 matching lines...) Expand all
32 #include "content/public/browser/render_widget_host_iterator.h" 32 #include "content/public/browser/render_widget_host_iterator.h"
33 #include "content/public/browser/web_contents_delegate.h" 33 #include "content/public/browser/web_contents_delegate.h"
34 34
35 #if defined(OS_ANDROID) 35 #if defined(OS_ANDROID)
36 #include "content/browser/power_save_blocker_impl.h" 36 #include "content/browser/power_save_blocker_impl.h"
37 #include "content/public/browser/render_widget_host_view.h" 37 #include "content/public/browser/render_widget_host_view.h"
38 #endif 38 #endif
39 39
40 namespace content { 40 namespace content {
41 41
42 typedef std::vector<RenderViewDevToolsAgentHost*> Instances; 42 typedef std::vector<RenderFrameDevToolsAgentHost*> Instances;
43 43
44 namespace { 44 namespace {
45 base::LazyInstance<Instances>::Leaky g_instances = LAZY_INSTANCE_INITIALIZER; 45 base::LazyInstance<Instances>::Leaky g_instances = LAZY_INSTANCE_INITIALIZER;
46 46
47 static RenderViewDevToolsAgentHost* FindAgentHost(RenderFrameHost* host) { 47 static RenderFrameDevToolsAgentHost* FindAgentHost(RenderFrameHost* host) {
48 if (g_instances == NULL) 48 if (g_instances == NULL)
49 return NULL; 49 return NULL;
50 for (Instances::iterator it = g_instances.Get().begin(); 50 for (Instances::iterator it = g_instances.Get().begin();
51 it != g_instances.Get().end(); ++it) { 51 it != g_instances.Get().end(); ++it) {
52 if ((*it)->HasRenderFrameHost(host)) 52 if ((*it)->HasRenderFrameHost(host))
53 return *it; 53 return *it;
54 } 54 }
55 return NULL; 55 return NULL;
56 } 56 }
57 57
58 // Returns RenderViewDevToolsAgentHost attached to any of RenderFrameHost 58 // Returns RenderFrameDevToolsAgentHost attached to any of RenderFrameHost
59 // instances associated with |web_contents| 59 // instances associated with |web_contents|
60 static RenderViewDevToolsAgentHost* FindAgentHost(WebContents* web_contents) { 60 static RenderFrameDevToolsAgentHost* FindAgentHost(WebContents* web_contents) {
61 if (g_instances == NULL) 61 if (g_instances == NULL)
62 return NULL; 62 return NULL;
63 for (Instances::iterator it = g_instances.Get().begin(); 63 for (Instances::iterator it = g_instances.Get().begin();
64 it != g_instances.Get().end(); ++it) { 64 it != g_instances.Get().end(); ++it) {
65 if ((*it)->GetWebContents() == web_contents) 65 if ((*it)->GetWebContents() == web_contents)
66 return *it; 66 return *it;
67 } 67 }
68 return NULL; 68 return NULL;
69 } 69 }
70 70
71 } // namespace 71 } // namespace
72 72
73 scoped_refptr<DevToolsAgentHost> 73 scoped_refptr<DevToolsAgentHost>
74 DevToolsAgentHost::GetOrCreateFor(WebContents* web_contents) { 74 DevToolsAgentHost::GetOrCreateFor(WebContents* web_contents) {
75 RenderViewDevToolsAgentHost* result = FindAgentHost(web_contents); 75 RenderFrameDevToolsAgentHost* result = FindAgentHost(web_contents);
76 if (!result) 76 if (!result)
77 result = new RenderViewDevToolsAgentHost(web_contents->GetMainFrame()); 77 result = new RenderFrameDevToolsAgentHost(web_contents->GetMainFrame());
78 return result; 78 return result;
79 } 79 }
80 80
81 // static 81 // static
82 bool DevToolsAgentHost::HasFor(WebContents* web_contents) { 82 bool DevToolsAgentHost::HasFor(WebContents* web_contents) {
83 return FindAgentHost(web_contents) != NULL; 83 return FindAgentHost(web_contents) != NULL;
84 } 84 }
85 85
86 // static 86 // static
87 bool DevToolsAgentHost::IsDebuggerAttached(WebContents* web_contents) { 87 bool DevToolsAgentHost::IsDebuggerAttached(WebContents* web_contents) {
88 RenderViewDevToolsAgentHost* agent_host = FindAgentHost(web_contents); 88 RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(web_contents);
89 return agent_host && agent_host->IsAttached(); 89 return agent_host && agent_host->IsAttached();
90 } 90 }
91 91
92 //static 92 //static
93 std::vector<WebContents*> DevToolsAgentHostImpl::GetInspectableWebContents() { 93 std::vector<WebContents*> DevToolsAgentHostImpl::GetInspectableWebContents() {
94 std::set<WebContents*> set; 94 std::set<WebContents*> set;
95 scoped_ptr<RenderWidgetHostIterator> widgets( 95 scoped_ptr<RenderWidgetHostIterator> widgets(
96 RenderWidgetHost::GetRenderWidgetHosts()); 96 RenderWidgetHost::GetRenderWidgetHosts());
97 while (RenderWidgetHost* widget = widgets->GetNextHost()) { 97 while (RenderWidgetHost* widget = widgets->GetNextHost()) {
98 // Ignore processes that don't have a connection, such as crashed contents. 98 // Ignore processes that don't have a connection, such as crashed contents.
99 if (!widget->GetProcess()->HasConnection()) 99 if (!widget->GetProcess()->HasConnection())
100 continue; 100 continue;
101 if (!widget->IsRenderView()) 101 if (!widget->IsRenderView())
102 continue; 102 continue;
103 103
104 RenderViewHost* rvh = RenderViewHost::From(widget); 104 RenderViewHost* rvh = RenderViewHost::From(widget);
105 WebContents* web_contents = WebContents::FromRenderViewHost(rvh); 105 WebContents* web_contents = WebContents::FromRenderViewHost(rvh);
106 if (web_contents) 106 if (web_contents)
107 set.insert(web_contents); 107 set.insert(web_contents);
108 } 108 }
109 std::vector<WebContents*> result(set.size()); 109 std::vector<WebContents*> result(set.size());
110 std::copy(set.begin(), set.end(), result.begin()); 110 std::copy(set.begin(), set.end(), result.begin());
111 return result; 111 return result;
112 } 112 }
113 113
114 // static 114 // static
115 void RenderViewDevToolsAgentHost::OnCancelPendingNavigation( 115 void RenderFrameDevToolsAgentHost::OnCancelPendingNavigation(
116 RenderFrameHost* pending, 116 RenderFrameHost* pending,
117 RenderFrameHost* current) { 117 RenderFrameHost* current) {
118 RenderViewDevToolsAgentHost* agent_host = FindAgentHost(pending); 118 RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(pending);
119 if (!agent_host) 119 if (!agent_host)
120 return; 120 return;
121 agent_host->DisconnectRenderFrameHost(); 121 agent_host->DisconnectRenderFrameHost();
122 agent_host->ConnectRenderFrameHost(current); 122 agent_host->ConnectRenderFrameHost(current);
123 } 123 }
124 124
125 RenderViewDevToolsAgentHost::RenderViewDevToolsAgentHost(RenderFrameHost* rfh) 125 RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost(RenderFrameHost* rfh)
126 : render_frame_host_(NULL), 126 : render_frame_host_(NULL),
127 dom_handler_(new devtools::dom::DOMHandler()), 127 dom_handler_(new devtools::dom::DOMHandler()),
128 input_handler_(new devtools::input::InputHandler()), 128 input_handler_(new devtools::input::InputHandler()),
129 inspector_handler_(new devtools::inspector::InspectorHandler()), 129 inspector_handler_(new devtools::inspector::InspectorHandler()),
130 network_handler_(new devtools::network::NetworkHandler()), 130 network_handler_(new devtools::network::NetworkHandler()),
131 page_handler_(new devtools::page::PageHandler()), 131 page_handler_(new devtools::page::PageHandler()),
132 power_handler_(new devtools::power::PowerHandler()), 132 power_handler_(new devtools::power::PowerHandler()),
133 tracing_handler_(new devtools::tracing::TracingHandler( 133 tracing_handler_(new devtools::tracing::TracingHandler(
134 devtools::tracing::TracingHandler::Renderer)), 134 devtools::tracing::TracingHandler::Renderer)),
135 protocol_handler_(new DevToolsProtocolHandler( 135 protocol_handler_(new DevToolsProtocolHandler(
136 base::Bind(&RenderViewDevToolsAgentHost::DispatchOnInspectorFrontend, 136 base::Bind(&RenderFrameDevToolsAgentHost::DispatchOnInspectorFrontend,
137 base::Unretained(this)))), 137 base::Unretained(this)))),
138 reattaching_(false) { 138 reattaching_(false) {
139 DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher(); 139 DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher();
140 dispatcher->SetDOMHandler(dom_handler_.get()); 140 dispatcher->SetDOMHandler(dom_handler_.get());
141 dispatcher->SetInputHandler(input_handler_.get()); 141 dispatcher->SetInputHandler(input_handler_.get());
142 dispatcher->SetInspectorHandler(inspector_handler_.get()); 142 dispatcher->SetInspectorHandler(inspector_handler_.get());
143 dispatcher->SetNetworkHandler(network_handler_.get()); 143 dispatcher->SetNetworkHandler(network_handler_.get());
144 dispatcher->SetPageHandler(page_handler_.get()); 144 dispatcher->SetPageHandler(page_handler_.get());
145 dispatcher->SetPowerHandler(power_handler_.get()); 145 dispatcher->SetPowerHandler(power_handler_.get());
146 dispatcher->SetTracingHandler(tracing_handler_.get()); 146 dispatcher->SetTracingHandler(tracing_handler_.get());
147 SetRenderFrameHost(rfh); 147 SetRenderFrameHost(rfh);
148 g_instances.Get().push_back(this); 148 g_instances.Get().push_back(this);
149 AddRef(); // Balanced in RenderFrameHostDestroyed. 149 AddRef(); // Balanced in RenderFrameHostDestroyed.
150 DevToolsManager::GetInstance()->AgentHostChanged(this); 150 DevToolsManager::GetInstance()->AgentHostChanged(this);
151 } 151 }
152 152
153 BrowserContext* RenderViewDevToolsAgentHost::GetBrowserContext() { 153 BrowserContext* RenderFrameDevToolsAgentHost::GetBrowserContext() {
154 WebContents* contents = web_contents(); 154 WebContents* contents = web_contents();
155 return contents ? contents->GetBrowserContext() : nullptr; 155 return contents ? contents->GetBrowserContext() : nullptr;
156 } 156 }
157 157
158 WebContents* RenderViewDevToolsAgentHost::GetWebContents() { 158 WebContents* RenderFrameDevToolsAgentHost::GetWebContents() {
159 return web_contents(); 159 return web_contents();
160 } 160 }
161 161
162 void RenderViewDevToolsAgentHost::DispatchProtocolMessage( 162 void RenderFrameDevToolsAgentHost::DispatchProtocolMessage(
163 const std::string& message) { 163 const std::string& message) {
164 scoped_ptr<base::DictionaryValue> command = 164 scoped_ptr<base::DictionaryValue> command =
165 protocol_handler_->ParseCommand(message); 165 protocol_handler_->ParseCommand(message);
166 if (!command) 166 if (!command)
167 return; 167 return;
168 168
169 DevToolsManagerDelegate* delegate = 169 DevToolsManagerDelegate* delegate =
170 DevToolsManager::GetInstance()->delegate(); 170 DevToolsManager::GetInstance()->delegate();
171 if (delegate) { 171 if (delegate) {
172 scoped_ptr<base::DictionaryValue> response( 172 scoped_ptr<base::DictionaryValue> response(
173 delegate->HandleCommand(this, command.get())); 173 delegate->HandleCommand(this, command.get()));
174 if (response) { 174 if (response) {
175 std::string json_response; 175 std::string json_response;
176 base::JSONWriter::Write(response.get(), &json_response); 176 base::JSONWriter::Write(response.get(), &json_response);
177 DispatchOnInspectorFrontend(json_response); 177 DispatchOnInspectorFrontend(json_response);
178 return; 178 return;
179 } 179 }
180 } 180 }
181 181
182 if (protocol_handler_->HandleOptionalCommand(command.Pass())) 182 if (protocol_handler_->HandleOptionalCommand(command.Pass()))
183 return; 183 return;
184 184
185 IPCDevToolsAgentHost::DispatchProtocolMessage(message); 185 IPCDevToolsAgentHost::DispatchProtocolMessage(message);
186 } 186 }
187 187
188 void RenderViewDevToolsAgentHost::SendMessageToAgent(IPC::Message* msg) { 188 void RenderFrameDevToolsAgentHost::SendMessageToAgent(IPC::Message* msg) {
189 if (!render_frame_host_) 189 if (!render_frame_host_)
190 return; 190 return;
191 msg->set_routing_id(render_frame_host_->GetRoutingID()); 191 msg->set_routing_id(render_frame_host_->GetRoutingID());
192 render_frame_host_->Send(msg); 192 render_frame_host_->Send(msg);
193 } 193 }
194 194
195 void RenderViewDevToolsAgentHost::OnClientAttached() { 195 void RenderFrameDevToolsAgentHost::OnClientAttached() {
196 if (!render_frame_host_) 196 if (!render_frame_host_)
197 return; 197 return;
198 198
199 InnerOnClientAttached(); 199 InnerOnClientAttached();
200 200
201 // TODO(kaznacheev): Move this call back to DevToolsManager when 201 // TODO(kaznacheev): Move this call back to DevToolsManager when
202 // extensions::ProcessManager no longer relies on this notification. 202 // extensions::ProcessManager no longer relies on this notification.
203 if (!reattaching_) 203 if (!reattaching_)
204 DevToolsAgentHostImpl::NotifyCallbacks(this, true); 204 DevToolsAgentHostImpl::NotifyCallbacks(this, true);
205 } 205 }
206 206
207 void RenderViewDevToolsAgentHost::InnerOnClientAttached() { 207 void RenderFrameDevToolsAgentHost::InnerOnClientAttached() {
208 ChildProcessSecurityPolicyImpl::GetInstance()->GrantReadRawCookies( 208 ChildProcessSecurityPolicyImpl::GetInstance()->GrantReadRawCookies(
209 render_frame_host_->GetProcess()->GetID()); 209 render_frame_host_->GetProcess()->GetID());
210 210
211 #if defined(OS_ANDROID) 211 #if defined(OS_ANDROID)
212 power_save_blocker_.reset( 212 power_save_blocker_.reset(
213 static_cast<PowerSaveBlockerImpl*>( 213 static_cast<PowerSaveBlockerImpl*>(
214 PowerSaveBlocker::Create( 214 PowerSaveBlocker::Create(
215 PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep, 215 PowerSaveBlocker::kPowerSaveBlockPreventDisplaySleep,
216 "DevTools").release())); 216 "DevTools").release()));
217 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 217 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
218 render_frame_host_->GetRenderViewHost()); 218 render_frame_host_->GetRenderViewHost());
219 if (rvh->GetView()) { 219 if (rvh->GetView()) {
220 power_save_blocker_.get()-> 220 power_save_blocker_.get()->
221 InitDisplaySleepBlocker(rvh->GetView()->GetNativeView()); 221 InitDisplaySleepBlocker(rvh->GetView()->GetNativeView());
222 } 222 }
223 #endif 223 #endif
224 } 224 }
225 225
226 void RenderViewDevToolsAgentHost::OnClientDetached() { 226 void RenderFrameDevToolsAgentHost::OnClientDetached() {
227 #if defined(OS_ANDROID) 227 #if defined(OS_ANDROID)
228 power_save_blocker_.reset(); 228 power_save_blocker_.reset();
229 #endif 229 #endif
230 page_handler_->Detached(); 230 page_handler_->Detached();
231 power_handler_->Detached(); 231 power_handler_->Detached();
232 tracing_handler_->Detached(); 232 tracing_handler_->Detached();
233 ClientDetachedFromRenderer(); 233 ClientDetachedFromRenderer();
234 234
235 // TODO(kaznacheev): Move this call back to DevToolsManager when 235 // TODO(kaznacheev): Move this call back to DevToolsManager when
236 // extensions::ProcessManager no longer relies on this notification. 236 // extensions::ProcessManager no longer relies on this notification.
237 if (!reattaching_) 237 if (!reattaching_)
238 DevToolsAgentHostImpl::NotifyCallbacks(this, false); 238 DevToolsAgentHostImpl::NotifyCallbacks(this, false);
239 } 239 }
240 240
241 void RenderViewDevToolsAgentHost::ClientDetachedFromRenderer() { 241 void RenderFrameDevToolsAgentHost::ClientDetachedFromRenderer() {
242 if (!render_frame_host_) 242 if (!render_frame_host_)
243 return; 243 return;
244 244
245 InnerClientDetachedFromRenderer(); 245 InnerClientDetachedFromRenderer();
246 } 246 }
247 247
248 void RenderViewDevToolsAgentHost::InnerClientDetachedFromRenderer() { 248 void RenderFrameDevToolsAgentHost::InnerClientDetachedFromRenderer() {
249 bool process_has_agents = false; 249 bool process_has_agents = false;
250 RenderProcessHost* render_process_host = render_frame_host_->GetProcess(); 250 RenderProcessHost* render_process_host = render_frame_host_->GetProcess();
251 for (Instances::iterator it = g_instances.Get().begin(); 251 for (Instances::iterator it = g_instances.Get().begin();
252 it != g_instances.Get().end(); ++it) { 252 it != g_instances.Get().end(); ++it) {
253 if (*it == this || !(*it)->IsAttached()) 253 if (*it == this || !(*it)->IsAttached())
254 continue; 254 continue;
255 RenderFrameHost* rfh = (*it)->render_frame_host_; 255 RenderFrameHost* rfh = (*it)->render_frame_host_;
256 if (rfh && rfh->GetProcess() == render_process_host) 256 if (rfh && rfh->GetProcess() == render_process_host)
257 process_has_agents = true; 257 process_has_agents = true;
258 } 258 }
259 259
260 // We are the last to disconnect from the renderer -> revoke permissions. 260 // We are the last to disconnect from the renderer -> revoke permissions.
261 if (!process_has_agents) { 261 if (!process_has_agents) {
262 ChildProcessSecurityPolicyImpl::GetInstance()->RevokeReadRawCookies( 262 ChildProcessSecurityPolicyImpl::GetInstance()->RevokeReadRawCookies(
263 render_process_host->GetID()); 263 render_process_host->GetID());
264 } 264 }
265 } 265 }
266 266
267 RenderViewDevToolsAgentHost::~RenderViewDevToolsAgentHost() { 267 RenderFrameDevToolsAgentHost::~RenderFrameDevToolsAgentHost() {
268 Instances::iterator it = std::find(g_instances.Get().begin(), 268 Instances::iterator it = std::find(g_instances.Get().begin(),
269 g_instances.Get().end(), 269 g_instances.Get().end(),
270 this); 270 this);
271 if (it != g_instances.Get().end()) 271 if (it != g_instances.Get().end())
272 g_instances.Get().erase(it); 272 g_instances.Get().erase(it);
273 } 273 }
274 274
275 // TODO(creis): Consider removing this in favor of RenderFrameHostChanged. 275 // TODO(creis): Consider removing this in favor of RenderFrameHostChanged.
276 void RenderViewDevToolsAgentHost::AboutToNavigateRenderFrame( 276 void RenderFrameDevToolsAgentHost::AboutToNavigateRenderFrame(
277 RenderFrameHost* old_host, 277 RenderFrameHost* old_host,
278 RenderFrameHost* new_host) { 278 RenderFrameHost* new_host) {
279 if (render_frame_host_ != old_host) 279 if (render_frame_host_ != old_host)
280 return; 280 return;
281 281
282 // TODO(creis): This will need to be updated for --site-per-process, since 282 // TODO(creis): This will need to be updated for --site-per-process, since
283 // RenderViewHost is going away and navigations could happen in any frame. 283 // RenderViewHost is going away and navigations could happen in any frame.
284 if (render_frame_host_ == new_host) { 284 if (render_frame_host_ == new_host) {
285 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 285 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
286 render_frame_host_->GetRenderViewHost()); 286 render_frame_host_->GetRenderViewHost());
287 if (rvh->render_view_termination_status() == 287 if (rvh->render_view_termination_status() ==
288 base::TERMINATION_STATUS_STILL_RUNNING) 288 base::TERMINATION_STATUS_STILL_RUNNING)
289 return; 289 return;
290 } 290 }
291 ReattachToRenderFrameHost(new_host); 291 ReattachToRenderFrameHost(new_host);
292 } 292 }
293 293
294 void RenderViewDevToolsAgentHost::RenderFrameHostChanged( 294 void RenderFrameDevToolsAgentHost::RenderFrameHostChanged(
295 RenderFrameHost* old_host, 295 RenderFrameHost* old_host,
296 RenderFrameHost* new_host) { 296 RenderFrameHost* new_host) {
297 if (old_host == render_frame_host_ && new_host != render_frame_host_) { 297 if (old_host == render_frame_host_ && new_host != render_frame_host_) {
298 // AboutToNavigateRenderFrame was not called for renderer-initiated 298 // AboutToNavigateRenderFrame was not called for renderer-initiated
299 // navigation. 299 // navigation.
300 ReattachToRenderFrameHost(new_host); 300 ReattachToRenderFrameHost(new_host);
301 } 301 }
302 } 302 }
303 303
304 void 304 void
305 RenderViewDevToolsAgentHost::ReattachToRenderFrameHost(RenderFrameHost* rfh) { 305 RenderFrameDevToolsAgentHost::ReattachToRenderFrameHost(RenderFrameHost* rfh) {
306 DCHECK(!reattaching_); 306 DCHECK(!reattaching_);
307 reattaching_ = true; 307 reattaching_ = true;
308 DisconnectRenderFrameHost(); 308 DisconnectRenderFrameHost();
309 ConnectRenderFrameHost(rfh); 309 ConnectRenderFrameHost(rfh);
310 reattaching_ = false; 310 reattaching_ = false;
311 } 311 }
312 312
313 void RenderViewDevToolsAgentHost::RenderFrameDeleted(RenderFrameHost* rfh) { 313 void RenderFrameDevToolsAgentHost::RenderFrameDeleted(RenderFrameHost* rfh) {
314 if (rfh != render_frame_host_) 314 if (rfh != render_frame_host_)
315 return; 315 return;
316 316
317 DCHECK(render_frame_host_); 317 DCHECK(render_frame_host_);
318 scoped_refptr<RenderViewDevToolsAgentHost> protect(this); 318 scoped_refptr<RenderFrameDevToolsAgentHost> protect(this);
319 HostClosed(); 319 HostClosed();
320 ClearRenderFrameHost(); 320 ClearRenderFrameHost();
321 DevToolsManager::GetInstance()->AgentHostChanged(this); 321 DevToolsManager::GetInstance()->AgentHostChanged(this);
322 Release(); 322 Release();
323 } 323 }
324 324
325 void RenderViewDevToolsAgentHost::RenderProcessGone( 325 void RenderFrameDevToolsAgentHost::RenderProcessGone(
326 base::TerminationStatus status) { 326 base::TerminationStatus status) {
327 switch(status) { 327 switch(status) {
328 case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: 328 case base::TERMINATION_STATUS_ABNORMAL_TERMINATION:
329 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: 329 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED:
330 case base::TERMINATION_STATUS_PROCESS_CRASHED: 330 case base::TERMINATION_STATUS_PROCESS_CRASHED:
331 #if defined(OS_ANDROID) 331 #if defined(OS_ANDROID)
332 case base::TERMINATION_STATUS_OOM_PROTECTED: 332 case base::TERMINATION_STATUS_OOM_PROTECTED:
333 #endif 333 #endif
334 RenderFrameCrashed(); 334 RenderFrameCrashed();
335 break; 335 break;
336 default: 336 default:
337 break; 337 break;
338 } 338 }
339 } 339 }
340 340
341 bool RenderViewDevToolsAgentHost::OnMessageReceived( 341 bool RenderFrameDevToolsAgentHost::OnMessageReceived(
342 const IPC::Message& message) { 342 const IPC::Message& message) {
343 if (!render_frame_host_) 343 if (!render_frame_host_)
344 return false; 344 return false;
345 if (message.type() == ViewHostMsg_SwapCompositorFrame::ID) 345 if (message.type() == ViewHostMsg_SwapCompositorFrame::ID)
346 OnSwapCompositorFrame(message); 346 OnSwapCompositorFrame(message);
347 return false; 347 return false;
348 } 348 }
349 349
350 bool RenderViewDevToolsAgentHost::OnMessageReceived( 350 bool RenderFrameDevToolsAgentHost::OnMessageReceived(
351 const IPC::Message& message, 351 const IPC::Message& message,
352 RenderFrameHost* render_frame_host) { 352 RenderFrameHost* render_frame_host) {
353 if (!render_frame_host_ || render_frame_host != render_frame_host_) 353 if (!render_frame_host_ || render_frame_host != render_frame_host_)
354 return false; 354 return false;
355 355
356 bool handled = true; 356 bool handled = true;
357 IPC_BEGIN_MESSAGE_MAP(RenderViewDevToolsAgentHost, message) 357 IPC_BEGIN_MESSAGE_MAP(RenderFrameDevToolsAgentHost, message)
358 IPC_MESSAGE_HANDLER(DevToolsClientMsg_DispatchOnInspectorFrontend, 358 IPC_MESSAGE_HANDLER(DevToolsClientMsg_DispatchOnInspectorFrontend,
359 OnDispatchOnInspectorFrontend) 359 OnDispatchOnInspectorFrontend)
360 IPC_MESSAGE_UNHANDLED(handled = false) 360 IPC_MESSAGE_UNHANDLED(handled = false)
361 IPC_END_MESSAGE_MAP() 361 IPC_END_MESSAGE_MAP()
362 return handled; 362 return handled;
363 } 363 }
364 364
365 void RenderViewDevToolsAgentHost::DidAttachInterstitialPage() { 365 void RenderFrameDevToolsAgentHost::DidAttachInterstitialPage() {
366 page_handler_->DidAttachInterstitialPage(); 366 page_handler_->DidAttachInterstitialPage();
367 367
368 if (!render_frame_host_) 368 if (!render_frame_host_)
369 return; 369 return;
370 // The rvh set in AboutToNavigateRenderFrame turned out to be interstitial. 370 // The rvh set in AboutToNavigateRenderFrame turned out to be interstitial.
371 // Connect back to the real one. 371 // Connect back to the real one.
372 WebContents* web_contents = 372 WebContents* web_contents =
373 WebContents::FromRenderFrameHost(render_frame_host_); 373 WebContents::FromRenderFrameHost(render_frame_host_);
374 if (!web_contents) 374 if (!web_contents)
375 return; 375 return;
376 DisconnectRenderFrameHost(); 376 DisconnectRenderFrameHost();
377 ConnectRenderFrameHost(web_contents->GetMainFrame()); 377 ConnectRenderFrameHost(web_contents->GetMainFrame());
378 } 378 }
379 379
380 void RenderViewDevToolsAgentHost::DidDetachInterstitialPage() { 380 void RenderFrameDevToolsAgentHost::DidDetachInterstitialPage() {
381 page_handler_->DidDetachInterstitialPage(); 381 page_handler_->DidDetachInterstitialPage();
382 } 382 }
383 383
384 void RenderViewDevToolsAgentHost::TitleWasSet( 384 void RenderFrameDevToolsAgentHost::TitleWasSet(
385 NavigationEntry* entry, bool explicit_set) { 385 NavigationEntry* entry, bool explicit_set) {
386 DevToolsManager::GetInstance()->AgentHostChanged(this); 386 DevToolsManager::GetInstance()->AgentHostChanged(this);
387 } 387 }
388 388
389 void RenderViewDevToolsAgentHost::NavigationEntryCommitted( 389 void RenderFrameDevToolsAgentHost::NavigationEntryCommitted(
390 const LoadCommittedDetails& load_details) { 390 const LoadCommittedDetails& load_details) {
391 DevToolsManager::GetInstance()->AgentHostChanged(this); 391 DevToolsManager::GetInstance()->AgentHostChanged(this);
392 } 392 }
393 393
394 void RenderViewDevToolsAgentHost::Observe(int type, 394 void RenderFrameDevToolsAgentHost::Observe(int type,
395 const NotificationSource& source, 395 const NotificationSource& source,
396 const NotificationDetails& details) { 396 const NotificationDetails& details) {
397 if (type == content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED) { 397 if (type == content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED) {
398 bool visible = *Details<bool>(details).ptr(); 398 bool visible = *Details<bool>(details).ptr();
399 page_handler_->OnVisibilityChanged(visible); 399 page_handler_->OnVisibilityChanged(visible);
400 } 400 }
401 } 401 }
402 402
403 void RenderViewDevToolsAgentHost::SetRenderFrameHost(RenderFrameHost* rfh) { 403 void RenderFrameDevToolsAgentHost::SetRenderFrameHost(RenderFrameHost* rfh) {
404 DCHECK(!render_frame_host_); 404 DCHECK(!render_frame_host_);
405 render_frame_host_ = static_cast<RenderFrameHostImpl*>(rfh); 405 render_frame_host_ = static_cast<RenderFrameHostImpl*>(rfh);
406 406
407 WebContentsObserver::Observe(WebContents::FromRenderFrameHost(rfh)); 407 WebContentsObserver::Observe(WebContents::FromRenderFrameHost(rfh));
408 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 408 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
409 rfh->GetRenderViewHost()); 409 rfh->GetRenderViewHost());
410 dom_handler_->SetRenderViewHost(rvh); 410 dom_handler_->SetRenderViewHost(rvh);
411 input_handler_->SetRenderViewHost(rvh); 411 input_handler_->SetRenderViewHost(rvh);
412 network_handler_->SetRenderViewHost(rvh); 412 network_handler_->SetRenderViewHost(rvh);
413 page_handler_->SetRenderViewHost(rvh); 413 page_handler_->SetRenderViewHost(rvh);
414 414
415 registrar_.Add( 415 registrar_.Add(
416 this, 416 this,
417 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, 417 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
418 content::Source<RenderWidgetHost>(rvh)); 418 content::Source<RenderWidgetHost>(rvh));
419 } 419 }
420 420
421 void RenderViewDevToolsAgentHost::ClearRenderFrameHost() { 421 void RenderFrameDevToolsAgentHost::ClearRenderFrameHost() {
422 DCHECK(render_frame_host_); 422 DCHECK(render_frame_host_);
423 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>( 423 RenderViewHostImpl* rvh = static_cast<RenderViewHostImpl*>(
424 render_frame_host_->GetRenderViewHost()); 424 render_frame_host_->GetRenderViewHost());
425 registrar_.Remove( 425 registrar_.Remove(
426 this, 426 this,
427 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED, 427 content::NOTIFICATION_RENDER_WIDGET_VISIBILITY_CHANGED,
428 content::Source<RenderWidgetHost>(rvh)); 428 content::Source<RenderWidgetHost>(rvh));
429 render_frame_host_ = nullptr; 429 render_frame_host_ = nullptr;
430 dom_handler_->SetRenderViewHost(nullptr); 430 dom_handler_->SetRenderViewHost(nullptr);
431 input_handler_->SetRenderViewHost(nullptr); 431 input_handler_->SetRenderViewHost(nullptr);
432 network_handler_->SetRenderViewHost(nullptr); 432 network_handler_->SetRenderViewHost(nullptr);
433 page_handler_->SetRenderViewHost(nullptr); 433 page_handler_->SetRenderViewHost(nullptr);
434 } 434 }
435 435
436 void RenderViewDevToolsAgentHost::DisconnectWebContents() { 436 void RenderFrameDevToolsAgentHost::DisconnectWebContents() {
437 DisconnectRenderFrameHost(); 437 DisconnectRenderFrameHost();
438 } 438 }
439 439
440 void RenderViewDevToolsAgentHost::ConnectWebContents(WebContents* wc) { 440 void RenderFrameDevToolsAgentHost::ConnectWebContents(WebContents* wc) {
441 ConnectRenderFrameHost(wc->GetMainFrame()); 441 ConnectRenderFrameHost(wc->GetMainFrame());
442 } 442 }
443 443
444 DevToolsAgentHost::Type RenderViewDevToolsAgentHost::GetType() { 444 DevToolsAgentHost::Type RenderFrameDevToolsAgentHost::GetType() {
445 return TYPE_WEB_CONTENTS; 445 return TYPE_WEB_CONTENTS;
446 } 446 }
447 447
448 std::string RenderViewDevToolsAgentHost::GetTitle() { 448 std::string RenderFrameDevToolsAgentHost::GetTitle() {
449 if (WebContents* web_contents = GetWebContents()) 449 if (WebContents* web_contents = GetWebContents())
450 return base::UTF16ToUTF8(web_contents->GetTitle()); 450 return base::UTF16ToUTF8(web_contents->GetTitle());
451 return ""; 451 return "";
452 } 452 }
453 453
454 GURL RenderViewDevToolsAgentHost::GetURL() { 454 GURL RenderFrameDevToolsAgentHost::GetURL() {
455 if (WebContents* web_contents = GetWebContents()) 455 if (WebContents* web_contents = GetWebContents())
456 return web_contents->GetVisibleURL(); 456 return web_contents->GetVisibleURL();
457 return render_frame_host_ ? 457 return render_frame_host_ ?
458 render_frame_host_->GetLastCommittedURL() : GURL(); 458 render_frame_host_->GetLastCommittedURL() : GURL();
459 } 459 }
460 460
461 bool RenderViewDevToolsAgentHost::Activate() { 461 bool RenderFrameDevToolsAgentHost::Activate() {
462 if (render_frame_host_) { 462 if (render_frame_host_) {
463 render_frame_host_->GetRenderViewHost()->GetDelegate()->Activate(); 463 render_frame_host_->GetRenderViewHost()->GetDelegate()->Activate();
464 return true; 464 return true;
465 } 465 }
466 return false; 466 return false;
467 } 467 }
468 468
469 bool RenderViewDevToolsAgentHost::Close() { 469 bool RenderFrameDevToolsAgentHost::Close() {
470 if (render_frame_host_) { 470 if (render_frame_host_) {
471 render_frame_host_->GetRenderViewHost()->ClosePage(); 471 render_frame_host_->GetRenderViewHost()->ClosePage();
472 return true; 472 return true;
473 } 473 }
474 return false; 474 return false;
475 } 475 }
476 476
477 void RenderViewDevToolsAgentHost::ConnectRenderFrameHost(RenderFrameHost* rfh) { 477 void RenderFrameDevToolsAgentHost::ConnectRenderFrameHost(
478 RenderFrameHost* rfh) {
478 SetRenderFrameHost(rfh); 479 SetRenderFrameHost(rfh);
479 if (IsAttached()) 480 if (IsAttached())
480 Reattach(); 481 Reattach();
481 } 482 }
482 483
483 void RenderViewDevToolsAgentHost::DisconnectRenderFrameHost() { 484 void RenderFrameDevToolsAgentHost::DisconnectRenderFrameHost() {
484 ClientDetachedFromRenderer(); 485 ClientDetachedFromRenderer();
485 ClearRenderFrameHost(); 486 ClearRenderFrameHost();
486 } 487 }
487 488
488 void RenderViewDevToolsAgentHost::RenderFrameCrashed() { 489 void RenderFrameDevToolsAgentHost::RenderFrameCrashed() {
489 inspector_handler_->TargetCrashed(); 490 inspector_handler_->TargetCrashed();
490 } 491 }
491 492
492 void RenderViewDevToolsAgentHost::OnSwapCompositorFrame( 493 void RenderFrameDevToolsAgentHost::OnSwapCompositorFrame(
493 const IPC::Message& message) { 494 const IPC::Message& message) {
494 ViewHostMsg_SwapCompositorFrame::Param param; 495 ViewHostMsg_SwapCompositorFrame::Param param;
495 if (!ViewHostMsg_SwapCompositorFrame::Read(&message, &param)) 496 if (!ViewHostMsg_SwapCompositorFrame::Read(&message, &param))
496 return; 497 return;
497 page_handler_->OnSwapCompositorFrame(get<1>(param).metadata); 498 page_handler_->OnSwapCompositorFrame(get<1>(param).metadata);
498 } 499 }
499 500
500 void RenderViewDevToolsAgentHost::SynchronousSwapCompositorFrame( 501 void RenderFrameDevToolsAgentHost::SynchronousSwapCompositorFrame(
501 const cc::CompositorFrameMetadata& frame_metadata) { 502 const cc::CompositorFrameMetadata& frame_metadata) {
502 if (!render_frame_host_) 503 if (!render_frame_host_)
503 return; 504 return;
504 page_handler_->OnSwapCompositorFrame(frame_metadata); 505 page_handler_->OnSwapCompositorFrame(frame_metadata);
505 } 506 }
506 507
507 bool RenderViewDevToolsAgentHost::HasRenderFrameHost( 508 bool RenderFrameDevToolsAgentHost::HasRenderFrameHost(
508 RenderFrameHost* host) { 509 RenderFrameHost* host) {
509 return host == render_frame_host_; 510 return host == render_frame_host_;
510 } 511 }
511 512
512 void RenderViewDevToolsAgentHost::OnDispatchOnInspectorFrontend( 513 void RenderFrameDevToolsAgentHost::OnDispatchOnInspectorFrontend(
513 const DevToolsMessageChunk& message) { 514 const DevToolsMessageChunk& message) {
514 if (!IsAttached() || !render_frame_host_) 515 if (!IsAttached() || !render_frame_host_)
515 return; 516 return;
516 ProcessChunkedMessageFromAgent(message); 517 ProcessChunkedMessageFromAgent(message);
517 } 518 }
518 519
519 void RenderViewDevToolsAgentHost::DispatchOnInspectorFrontend( 520 void RenderFrameDevToolsAgentHost::DispatchOnInspectorFrontend(
520 const std::string& message) { 521 const std::string& message) {
521 if (!IsAttached() || !render_frame_host_) 522 if (!IsAttached() || !render_frame_host_)
522 return; 523 return;
523 SendMessageToClient(message); 524 SendMessageToClient(message);
524 } 525 }
525 526
526 } // namespace content 527 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698