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

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

Issue 1729373002: PlzNavigate: fix DevToolsProtocolTest.CrossSitePauseInBeforeUnload (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments Created 4 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_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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698