Chromium Code Reviews| OLD | NEW |
|---|---|
| 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_frame_devtools_agent_host.h" | 5 #include "content/browser/devtools/render_frame_devtools_agent_host.h" |
| 6 | 6 |
| 7 #include <utility> | 7 #include <utility> |
| 8 | 8 |
| 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" |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 41 #include "content/public/browser/render_widget_host_view.h" | 41 #include "content/public/browser/render_widget_host_view.h" |
| 42 #endif | 42 #endif |
| 43 | 43 |
| 44 namespace content { | 44 namespace content { |
| 45 | 45 |
| 46 typedef std::vector<RenderFrameDevToolsAgentHost*> Instances; | 46 typedef std::vector<RenderFrameDevToolsAgentHost*> Instances; |
| 47 | 47 |
| 48 namespace { | 48 namespace { |
| 49 base::LazyInstance<Instances>::Leaky g_instances = LAZY_INSTANCE_INITIALIZER; | 49 base::LazyInstance<Instances>::Leaky g_instances = LAZY_INSTANCE_INITIALIZER; |
| 50 | 50 |
| 51 bool browser_side_navigation = false; | |
| 52 | |
| 53 static RenderFrameDevToolsAgentHost* FindAgentHost(RenderFrameHost* host) { | 51 static RenderFrameDevToolsAgentHost* FindAgentHost(RenderFrameHost* host) { |
| 54 if (g_instances == NULL) | 52 if (g_instances == NULL) |
| 55 return NULL; | 53 return NULL; |
| 56 for (Instances::iterator it = g_instances.Get().begin(); | 54 for (Instances::iterator it = g_instances.Get().begin(); |
| 57 it != g_instances.Get().end(); ++it) { | 55 it != g_instances.Get().end(); ++it) { |
| 58 if ((*it)->HasRenderFrameHost(host)) | 56 if ((*it)->HasRenderFrameHost(host)) |
| 59 return *it; | 57 return *it; |
| 60 } | 58 } |
| 61 return NULL; | 59 return NULL; |
| 62 } | 60 } |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 305 RenderFrameDevToolsAgentHost::AppendAgentHostForFrameIfApplicable, | 303 RenderFrameDevToolsAgentHost::AppendAgentHostForFrameIfApplicable, |
| 306 base::Unretained(result)); | 304 base::Unretained(result)); |
| 307 for (const auto& wc : WebContentsImpl::GetAllWebContents()) | 305 for (const auto& wc : WebContentsImpl::GetAllWebContents()) |
| 308 wc->ForEachFrame(callback); | 306 wc->ForEachFrame(callback); |
| 309 } | 307 } |
| 310 | 308 |
| 311 // static | 309 // static |
| 312 void RenderFrameDevToolsAgentHost::OnCancelPendingNavigation( | 310 void RenderFrameDevToolsAgentHost::OnCancelPendingNavigation( |
| 313 RenderFrameHost* pending, | 311 RenderFrameHost* pending, |
| 314 RenderFrameHost* current) { | 312 RenderFrameHost* current) { |
| 315 if (browser_side_navigation) | 313 if (IsBrowserSideNavigationEnabled()) |
| 316 return; | 314 return; |
| 317 | 315 |
| 318 RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(pending); | 316 RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(pending); |
| 319 if (!agent_host) | 317 if (!agent_host) |
| 320 return; | 318 return; |
| 321 if (agent_host->pending_ && agent_host->pending_->host() == pending) { | 319 if (agent_host->pending_ && agent_host->pending_->host() == pending) { |
| 322 DCHECK(agent_host->current_ && agent_host->current_->host() == current); | 320 DCHECK(agent_host->current_ && agent_host->current_->host() == current); |
| 323 agent_host->DiscardPending(); | 321 agent_host->DiscardPending(); |
| 324 } | 322 } |
| 325 } | 323 } |
| 326 | 324 |
| 327 // static | 325 // static |
| 328 void RenderFrameDevToolsAgentHost::OnBeforeNavigation( | 326 void RenderFrameDevToolsAgentHost::OnBeforeNavigation( |
| 329 RenderFrameHost* current, RenderFrameHost* pending) { | 327 RenderFrameHost* current, RenderFrameHost* pending) { |
| 330 RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(current); | 328 RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(current); |
| 331 if (agent_host) | 329 if (agent_host) |
| 332 agent_host->AboutToNavigateRenderFrame(current, pending); | 330 agent_host->AboutToNavigateRenderFrame(current, pending); |
| 333 } | 331 } |
| 334 | 332 |
| 333 // static | |
| 334 void RenderFrameDevToolsAgentHost::OnBeforeNavigation( | |
| 335 NavigationHandle* navigation_handle) { | |
| 336 FrameTreeNode* frame_tree_node = | |
| 337 static_cast<NavigationHandleImpl*>(navigation_handle)->frame_tree_node(); | |
| 338 RenderFrameDevToolsAgentHost* agent_host = | |
| 339 FindAgentHost(frame_tree_node->render_manager()->current_frame_host()); | |
|
dgozman
2016/02/25 18:11:24
We matched by |frame_tree_node_| before. Let's add
clamy
2016/03/02 12:33:50
Done.
| |
| 340 if (agent_host) | |
| 341 agent_host->AboutToNavigate(navigation_handle); | |
| 342 } | |
| 343 | |
| 335 RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( | 344 RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( |
| 336 RenderFrameHostImpl* host) | 345 RenderFrameHostImpl* host) |
| 337 : dom_handler_(new devtools::dom::DOMHandler()), | 346 : dom_handler_(new devtools::dom::DOMHandler()), |
| 338 input_handler_(new devtools::input::InputHandler()), | 347 input_handler_(new devtools::input::InputHandler()), |
| 339 inspector_handler_(new devtools::inspector::InspectorHandler()), | 348 inspector_handler_(new devtools::inspector::InspectorHandler()), |
| 340 io_handler_(new devtools::io::IOHandler(GetIOContext())), | 349 io_handler_(new devtools::io::IOHandler(GetIOContext())), |
| 341 network_handler_(new devtools::network::NetworkHandler()), | 350 network_handler_(new devtools::network::NetworkHandler()), |
| 342 page_handler_(nullptr), | 351 page_handler_(nullptr), |
| 343 security_handler_(nullptr), | 352 security_handler_(nullptr), |
| 344 service_worker_handler_( | 353 service_worker_handler_( |
| 345 new devtools::service_worker::ServiceWorkerHandler()), | 354 new devtools::service_worker::ServiceWorkerHandler()), |
| 346 tracing_handler_(new devtools::tracing::TracingHandler( | 355 tracing_handler_(new devtools::tracing::TracingHandler( |
| 347 devtools::tracing::TracingHandler::Renderer, | 356 devtools::tracing::TracingHandler::Renderer, |
| 348 host->GetFrameTreeNodeId(), | 357 host->GetFrameTreeNodeId(), |
| 349 GetIOContext())), | 358 GetIOContext())), |
| 350 emulation_handler_(nullptr), | 359 emulation_handler_(nullptr), |
| 351 frame_trace_recorder_(nullptr), | 360 frame_trace_recorder_(nullptr), |
| 352 protocol_handler_(new DevToolsProtocolHandler(this)), | 361 protocol_handler_(new DevToolsProtocolHandler(this)), |
| 353 current_frame_crashed_(false), | 362 current_frame_crashed_(false), |
| 354 pending_handle_(nullptr), | 363 pending_handle_(nullptr), |
| 355 in_navigation_(0), | |
| 356 frame_tree_node_(host->frame_tree_node()) { | 364 frame_tree_node_(host->frame_tree_node()) { |
| 357 browser_side_navigation = IsBrowserSideNavigationEnabled(); | |
| 358 DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher(); | 365 DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher(); |
| 359 dispatcher->SetDOMHandler(dom_handler_.get()); | 366 dispatcher->SetDOMHandler(dom_handler_.get()); |
| 360 dispatcher->SetInputHandler(input_handler_.get()); | 367 dispatcher->SetInputHandler(input_handler_.get()); |
| 361 dispatcher->SetInspectorHandler(inspector_handler_.get()); | 368 dispatcher->SetInspectorHandler(inspector_handler_.get()); |
| 362 dispatcher->SetIOHandler(io_handler_.get()); | 369 dispatcher->SetIOHandler(io_handler_.get()); |
| 363 dispatcher->SetNetworkHandler(network_handler_.get()); | 370 dispatcher->SetNetworkHandler(network_handler_.get()); |
| 364 dispatcher->SetServiceWorkerHandler(service_worker_handler_.get()); | 371 dispatcher->SetServiceWorkerHandler(service_worker_handler_.get()); |
| 365 dispatcher->SetTracingHandler(tracing_handler_.get()); | 372 dispatcher->SetTracingHandler(tracing_handler_.get()); |
| 366 | 373 |
| 367 if (!host->GetParent()) { | 374 if (!host->GetParent()) { |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 449 pending_->Detach(); | 456 pending_->Detach(); |
| 450 OnClientDetached(); | 457 OnClientDetached(); |
| 451 } | 458 } |
| 452 | 459 |
| 453 bool RenderFrameDevToolsAgentHost::DispatchProtocolMessage( | 460 bool RenderFrameDevToolsAgentHost::DispatchProtocolMessage( |
| 454 const std::string& message) { | 461 const std::string& message) { |
| 455 int call_id = 0; | 462 int call_id = 0; |
| 456 if (protocol_handler_->HandleOptionalMessage(session_id(), message, &call_id)) | 463 if (protocol_handler_->HandleOptionalMessage(session_id(), message, &call_id)) |
| 457 return true; | 464 return true; |
| 458 | 465 |
| 459 if (in_navigation_ > 0) { | 466 if (!navigating_handles_.empty()) { |
| 460 DCHECK(browser_side_navigation); | 467 DCHECK(IsBrowserSideNavigationEnabled()); |
| 461 in_navigation_protocol_message_buffer_[call_id] = | 468 in_navigation_protocol_message_buffer_[call_id] = |
| 462 std::make_pair(session_id(), message); | 469 std::make_pair(session_id(), message); |
| 463 return true; | 470 return true; |
| 464 } | 471 } |
| 465 | 472 |
| 466 if (current_) | 473 if (current_) |
| 467 current_->DispatchProtocolMessage(session_id(), call_id, message); | 474 current_->DispatchProtocolMessage(session_id(), call_id, message); |
| 468 if (pending_) | 475 if (pending_) |
| 469 pending_->DispatchProtocolMessage(session_id(), call_id, message); | 476 pending_->DispatchProtocolMessage(session_id(), call_id, message); |
| 470 return true; | 477 return true; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 514 } | 521 } |
| 515 | 522 |
| 516 RenderFrameDevToolsAgentHost::~RenderFrameDevToolsAgentHost() { | 523 RenderFrameDevToolsAgentHost::~RenderFrameDevToolsAgentHost() { |
| 517 Instances::iterator it = std::find(g_instances.Get().begin(), | 524 Instances::iterator it = std::find(g_instances.Get().begin(), |
| 518 g_instances.Get().end(), | 525 g_instances.Get().end(), |
| 519 this); | 526 this); |
| 520 if (it != g_instances.Get().end()) | 527 if (it != g_instances.Get().end()) |
| 521 g_instances.Get().erase(it); | 528 g_instances.Get().erase(it); |
| 522 } | 529 } |
| 523 | 530 |
| 524 void RenderFrameDevToolsAgentHost::DidStartNavigation( | |
| 525 NavigationHandle* navigation_handle) { | |
| 526 if (!browser_side_navigation) | |
| 527 return; | |
| 528 if (!MatchesMyTreeNode(navigation_handle)) | |
| 529 return; | |
| 530 DCHECK(current_); | |
| 531 DCHECK(in_navigation_ >= 0); | |
| 532 ++in_navigation_; | |
| 533 } | |
| 534 | |
| 535 void RenderFrameDevToolsAgentHost::ReadyToCommitNavigation( | 531 void RenderFrameDevToolsAgentHost::ReadyToCommitNavigation( |
| 536 NavigationHandle* navigation_handle) { | 532 NavigationHandle* navigation_handle) { |
| 537 // ReadyToCommitNavigation should only be called in PlzNavigate. | 533 // ReadyToCommitNavigation should only be called in PlzNavigate. |
| 538 DCHECK(browser_side_navigation); | 534 DCHECK(IsBrowserSideNavigationEnabled()); |
| 539 | 535 |
| 540 if (MatchesMyTreeNode(navigation_handle) && in_navigation_ != 0) { | 536 // If the navigation is not tracked, return; |
| 541 RenderFrameHostImpl* render_frame_host_impl = | 537 if (navigating_handles_.count(navigation_handle) == 0) |
| 542 static_cast<RenderFrameHostImpl*>( | 538 return; |
| 543 navigation_handle->GetRenderFrameHost()); | 539 |
| 544 if (current_->host() != render_frame_host_impl || current_frame_crashed_) { | 540 RenderFrameHostImpl* render_frame_host_impl = |
| 545 SetPending(render_frame_host_impl); | 541 static_cast<RenderFrameHostImpl*>( |
| 546 pending_handle_ = navigation_handle; | 542 navigation_handle->GetRenderFrameHost()); |
| 547 } | 543 if (current_->host() != render_frame_host_impl || current_frame_crashed_) { |
| 544 SetPending(render_frame_host_impl); | |
| 545 pending_handle_ = navigation_handle; | |
| 548 } | 546 } |
| 549 } | 547 } |
| 550 | 548 |
| 551 void RenderFrameDevToolsAgentHost::DidFinishNavigation( | 549 void RenderFrameDevToolsAgentHost::DidFinishNavigation( |
| 552 NavigationHandle* navigation_handle) { | 550 NavigationHandle* navigation_handle) { |
| 553 if (!browser_side_navigation) | 551 if (!IsBrowserSideNavigationEnabled()) |
| 554 return; | 552 return; |
| 555 | 553 |
| 556 if (MatchesMyTreeNode(navigation_handle) && in_navigation_ != 0) { | 554 // If the navigation is not tracked, return; |
| 557 --in_navigation_; | 555 if (navigating_handles_.count(navigation_handle) == 0) |
| 558 DCHECK(in_navigation_ >= 0); | 556 return; |
| 559 if (pending_handle_ == navigation_handle) { | 557 |
| 560 // This navigation handle did set the pending FrameHostHolder. | 558 // Now that the navigation is finished, remove the handle from the list of |
| 561 DCHECK(pending_); | 559 // navigating handles. |
| 562 if (navigation_handle->HasCommitted()) { | 560 navigating_handles_.erase(navigation_handle); |
| 563 DCHECK(pending_->host() == navigation_handle->GetRenderFrameHost()); | 561 |
| 564 CommitPending(); | 562 if (pending_handle_ == navigation_handle) { |
| 565 } else { | 563 // This navigation handle did set the pending FrameHostHolder. |
| 566 DiscardPending(); | 564 DCHECK(pending_); |
| 567 } | 565 if (navigation_handle->HasCommitted()) { |
| 568 pending_handle_ = nullptr; | 566 DCHECK(pending_->host() == navigation_handle->GetRenderFrameHost()); |
| 567 CommitPending(); | |
| 568 } else { | |
| 569 DiscardPending(); | |
| 569 } | 570 } |
| 570 DispatchBufferedProtocolMessagesIfNecessary(); | 571 pending_handle_ = nullptr; |
| 571 } | 572 } |
| 573 DispatchBufferedProtocolMessagesIfNecessary(); | |
| 572 | 574 |
| 573 if (navigation_handle->HasCommitted()) | 575 if (navigation_handle->HasCommitted()) |
| 574 service_worker_handler_->UpdateHosts(); | 576 service_worker_handler_->UpdateHosts(); |
| 575 } | 577 } |
| 576 | 578 |
| 577 void RenderFrameDevToolsAgentHost::AboutToNavigateRenderFrame( | 579 void RenderFrameDevToolsAgentHost::AboutToNavigateRenderFrame( |
| 578 RenderFrameHost* old_host, | 580 RenderFrameHost* old_host, |
| 579 RenderFrameHost* new_host) { | 581 RenderFrameHost* new_host) { |
| 580 if (browser_side_navigation) | 582 if (IsBrowserSideNavigationEnabled()) |
| 581 return; | 583 return; |
| 582 | 584 |
| 583 DCHECK(!pending_ || pending_->host() != old_host); | 585 DCHECK(!pending_ || pending_->host() != old_host); |
| 584 if (!current_ || current_->host() != old_host) | 586 if (!current_ || current_->host() != old_host) |
| 585 return; | 587 return; |
| 586 if (old_host == new_host && !current_frame_crashed_) | 588 if (old_host == new_host && !current_frame_crashed_) |
| 587 return; | 589 return; |
| 588 DCHECK(!pending_); | 590 DCHECK(!pending_); |
| 589 SetPending(static_cast<RenderFrameHostImpl*>(new_host)); | 591 SetPending(static_cast<RenderFrameHostImpl*>(new_host)); |
| 590 } | 592 } |
| 591 | 593 |
| 594 void RenderFrameDevToolsAgentHost::AboutToNavigate( | |
| 595 NavigationHandle* navigation_handle) { | |
| 596 if (!IsBrowserSideNavigationEnabled()) | |
| 597 return; | |
| 598 DCHECK(current_); | |
| 599 navigating_handles_.insert(navigation_handle); | |
| 600 } | |
| 601 | |
| 592 void RenderFrameDevToolsAgentHost::RenderFrameHostChanged( | 602 void RenderFrameDevToolsAgentHost::RenderFrameHostChanged( |
| 593 RenderFrameHost* old_host, | 603 RenderFrameHost* old_host, |
| 594 RenderFrameHost* new_host) { | 604 RenderFrameHost* new_host) { |
| 595 if (browser_side_navigation) | 605 if (IsBrowserSideNavigationEnabled()) |
| 596 return; | 606 return; |
| 597 | 607 |
| 598 DCHECK(!pending_ || pending_->host() != old_host); | 608 DCHECK(!pending_ || pending_->host() != old_host); |
| 599 if (!current_ || current_->host() != old_host) | 609 if (!current_ || current_->host() != old_host) |
| 600 return; | 610 return; |
| 601 | 611 |
| 602 // AboutToNavigateRenderFrame was not called for renderer-initiated | 612 // AboutToNavigateRenderFrame was not called for renderer-initiated |
| 603 // navigation. | 613 // navigation. |
| 604 if (!pending_) | 614 if (!pending_) |
| 605 SetPending(static_cast<RenderFrameHostImpl*>(new_host)); | 615 SetPending(static_cast<RenderFrameHostImpl*>(new_host)); |
| 606 | 616 |
| 607 CommitPending(); | 617 CommitPending(); |
| 608 } | 618 } |
| 609 | 619 |
| 610 void RenderFrameDevToolsAgentHost::FrameDeleted(RenderFrameHost* rfh) { | 620 void RenderFrameDevToolsAgentHost::FrameDeleted(RenderFrameHost* rfh) { |
| 611 if (pending_ && pending_->host() == rfh) { | 621 if (pending_ && pending_->host() == rfh) { |
| 612 if (!browser_side_navigation) | 622 if (!IsBrowserSideNavigationEnabled()) |
| 613 DiscardPending(); | 623 DiscardPending(); |
| 614 return; | 624 return; |
| 615 } | 625 } |
| 616 | 626 |
| 617 if (current_ && current_->host() == rfh) | 627 if (current_ && current_->host() == rfh) |
| 618 DestroyOnRenderFrameGone(); // |this| may be deleted at this point. | 628 DestroyOnRenderFrameGone(); // |this| may be deleted at this point. |
| 619 } | 629 } |
| 620 | 630 |
| 621 void RenderFrameDevToolsAgentHost::RenderFrameDeleted(RenderFrameHost* rfh) { | 631 void RenderFrameDevToolsAgentHost::RenderFrameDeleted(RenderFrameHost* rfh) { |
| 622 if (!current_frame_crashed_) | 632 if (!current_frame_crashed_) |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 705 | 715 |
| 706 void RenderFrameDevToolsAgentHost::DidDetachInterstitialPage() { | 716 void RenderFrameDevToolsAgentHost::DidDetachInterstitialPage() { |
| 707 if (page_handler_) | 717 if (page_handler_) |
| 708 page_handler_->DidDetachInterstitialPage(); | 718 page_handler_->DidDetachInterstitialPage(); |
| 709 } | 719 } |
| 710 | 720 |
| 711 void RenderFrameDevToolsAgentHost::DidCommitProvisionalLoadForFrame( | 721 void RenderFrameDevToolsAgentHost::DidCommitProvisionalLoadForFrame( |
| 712 RenderFrameHost* render_frame_host, | 722 RenderFrameHost* render_frame_host, |
| 713 const GURL& url, | 723 const GURL& url, |
| 714 ui::PageTransition transition_type) { | 724 ui::PageTransition transition_type) { |
| 715 if (browser_side_navigation) | 725 if (IsBrowserSideNavigationEnabled()) |
| 716 return; | 726 return; |
| 717 if (pending_ && pending_->host() == render_frame_host) | 727 if (pending_ && pending_->host() == render_frame_host) |
| 718 CommitPending(); | 728 CommitPending(); |
| 719 service_worker_handler_->UpdateHosts(); | 729 service_worker_handler_->UpdateHosts(); |
| 720 } | 730 } |
| 721 | 731 |
| 722 void RenderFrameDevToolsAgentHost::DidFailProvisionalLoad( | 732 void RenderFrameDevToolsAgentHost::DidFailProvisionalLoad( |
| 723 RenderFrameHost* render_frame_host, | 733 RenderFrameHost* render_frame_host, |
| 724 const GURL& validated_url, | 734 const GURL& validated_url, |
| 725 int error_code, | 735 int error_code, |
| 726 const base::string16& error_description, | 736 const base::string16& error_description, |
| 727 bool was_ignored_by_handler) { | 737 bool was_ignored_by_handler) { |
| 728 if (browser_side_navigation) | 738 if (IsBrowserSideNavigationEnabled()) |
| 729 return; | 739 return; |
| 730 if (pending_ && pending_->host() == render_frame_host) | 740 if (pending_ && pending_->host() == render_frame_host) |
| 731 DiscardPending(); | 741 DiscardPending(); |
| 732 } | 742 } |
| 733 | 743 |
| 734 void RenderFrameDevToolsAgentHost:: | 744 void RenderFrameDevToolsAgentHost:: |
| 735 DispatchBufferedProtocolMessagesIfNecessary() { | 745 DispatchBufferedProtocolMessagesIfNecessary() { |
| 736 if (in_navigation_ == 0 && in_navigation_protocol_message_buffer_.size()) { | 746 if (navigating_handles_.empty() && |
| 747 in_navigation_protocol_message_buffer_.size()) { | |
| 737 DCHECK(current_); | 748 DCHECK(current_); |
| 738 for (const auto& pair : in_navigation_protocol_message_buffer_) { | 749 for (const auto& pair : in_navigation_protocol_message_buffer_) { |
| 739 current_->DispatchProtocolMessage(pair.second.first, pair.first, | 750 current_->DispatchProtocolMessage(pair.second.first, pair.first, |
| 740 pair.second.second); | 751 pair.second.second); |
| 741 } | 752 } |
| 742 in_navigation_protocol_message_buffer_.clear(); | 753 in_navigation_protocol_message_buffer_.clear(); |
| 743 } | 754 } |
| 744 } | 755 } |
| 745 | 756 |
| 746 void RenderFrameDevToolsAgentHost::UpdateProtocolHandlers( | 757 void RenderFrameDevToolsAgentHost::UpdateProtocolHandlers( |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 760 } | 771 } |
| 761 | 772 |
| 762 void RenderFrameDevToolsAgentHost::DisconnectWebContents() { | 773 void RenderFrameDevToolsAgentHost::DisconnectWebContents() { |
| 763 if (pending_) | 774 if (pending_) |
| 764 DiscardPending(); | 775 DiscardPending(); |
| 765 UpdateProtocolHandlers(nullptr); | 776 UpdateProtocolHandlers(nullptr); |
| 766 disconnected_ = std::move(current_); | 777 disconnected_ = std::move(current_); |
| 767 disconnected_->Detach(); | 778 disconnected_->Detach(); |
| 768 frame_tree_node_ = nullptr; | 779 frame_tree_node_ = nullptr; |
| 769 in_navigation_protocol_message_buffer_.clear(); | 780 in_navigation_protocol_message_buffer_.clear(); |
| 770 in_navigation_ = 0; | 781 navigating_handles_.clear(); |
| 771 pending_handle_ = nullptr; | 782 pending_handle_ = nullptr; |
| 772 WebContentsObserver::Observe(nullptr); | 783 WebContentsObserver::Observe(nullptr); |
| 773 } | 784 } |
| 774 | 785 |
| 775 void RenderFrameDevToolsAgentHost::ConnectWebContents(WebContents* wc) { | 786 void RenderFrameDevToolsAgentHost::ConnectWebContents(WebContents* wc) { |
| 776 DCHECK(!current_); | 787 DCHECK(!current_); |
| 777 DCHECK(!pending_); | 788 DCHECK(!pending_); |
| 778 RenderFrameHostImpl* host = | 789 RenderFrameHostImpl* host = |
| 779 static_cast<RenderFrameHostImpl*>(wc->GetMainFrame()); | 790 static_cast<RenderFrameHostImpl*>(wc->GetMainFrame()); |
| 780 DCHECK(host); | 791 DCHECK(host); |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 885 bool RenderFrameDevToolsAgentHost::HasRenderFrameHost( | 896 bool RenderFrameDevToolsAgentHost::HasRenderFrameHost( |
| 886 RenderFrameHost* host) { | 897 RenderFrameHost* host) { |
| 887 return (current_ && current_->host() == host) || | 898 return (current_ && current_->host() == host) || |
| 888 (pending_ && pending_->host() == host); | 899 (pending_ && pending_->host() == host); |
| 889 } | 900 } |
| 890 | 901 |
| 891 bool RenderFrameDevToolsAgentHost::IsChildFrame() { | 902 bool RenderFrameDevToolsAgentHost::IsChildFrame() { |
| 892 return current_ && current_->host()->GetParent(); | 903 return current_ && current_->host()->GetParent(); |
| 893 } | 904 } |
| 894 | 905 |
| 895 bool RenderFrameDevToolsAgentHost::MatchesMyTreeNode( | |
| 896 NavigationHandle* navigation_handle) { | |
| 897 return frame_tree_node_ == | |
| 898 static_cast<NavigationHandleImpl*>(navigation_handle) | |
| 899 ->frame_tree_node(); | |
| 900 } | |
| 901 | |
| 902 } // namespace content | 906 } // namespace content |
| OLD | NEW |