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

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

Issue 2548263002: [DevTools] Migrate dom, emulation, inspector, network, page and schema handlers to new generator. (Closed)
Patch Set: rebase, test fix Created 4 years 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 <tuple> 7 #include <tuple>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/guid.h" 10 #include "base/guid.h"
(...skipping 360 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 return agent_host->page_handler_->CreateThrottleForNavigation( 371 return agent_host->page_handler_->CreateThrottleForNavigation(
372 navigation_handle); 372 navigation_handle);
373 } 373 }
374 return nullptr; 374 return nullptr;
375 } 375 }
376 376
377 // static 377 // static
378 bool RenderFrameDevToolsAgentHost::IsNetworkHandlerEnabled( 378 bool RenderFrameDevToolsAgentHost::IsNetworkHandlerEnabled(
379 FrameTreeNode* frame_tree_node) { 379 FrameTreeNode* frame_tree_node) {
380 RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(frame_tree_node); 380 RenderFrameDevToolsAgentHost* agent_host = FindAgentHost(frame_tree_node);
381 if (!agent_host) 381 return agent_host && agent_host->network_handler_ &&
382 return false; 382 agent_host->network_handler_->enabled();
383 return agent_host->network_handler_->enabled();
384 } 383 }
385 384
386 // static 385 // static
387 void RenderFrameDevToolsAgentHost::WebContentsCreated( 386 void RenderFrameDevToolsAgentHost::WebContentsCreated(
388 WebContents* web_contents) { 387 WebContents* web_contents) {
389 if (ShouldForceCreation()) { 388 if (ShouldForceCreation()) {
390 // Force agent host. 389 // Force agent host.
391 DevToolsAgentHost::GetOrCreateFor(web_contents); 390 DevToolsAgentHost::GetOrCreateFor(web_contents);
392 } 391 }
393 } 392 }
394 393
395 RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost( 394 RenderFrameDevToolsAgentHost::RenderFrameDevToolsAgentHost(
396 RenderFrameHostImpl* host) 395 RenderFrameHostImpl* host)
397 : DevToolsAgentHostImpl(base::GenerateGUID()), 396 : DevToolsAgentHostImpl(base::GenerateGUID()),
398 dom_handler_(new devtools::dom::DOMHandler()),
399 input_handler_(new devtools::input::InputHandler()), 397 input_handler_(new devtools::input::InputHandler()),
400 inspector_handler_(new devtools::inspector::InspectorHandler()),
401 network_handler_(new devtools::network::NetworkHandler()),
402 page_handler_(nullptr),
403 schema_handler_(new devtools::schema::SchemaHandler()),
404 security_handler_(nullptr), 398 security_handler_(nullptr),
405 service_worker_handler_( 399 service_worker_handler_(
406 new devtools::service_worker::ServiceWorkerHandler()), 400 new devtools::service_worker::ServiceWorkerHandler()),
407 storage_handler_(new devtools::storage::StorageHandler()), 401 storage_handler_(new devtools::storage::StorageHandler()),
408 target_handler_(new devtools::target::TargetHandler()), 402 target_handler_(new devtools::target::TargetHandler()),
409 emulation_handler_(nullptr),
410 frame_trace_recorder_(nullptr), 403 frame_trace_recorder_(nullptr),
411 protocol_handler_(new DevToolsProtocolHandler(this)), 404 protocol_handler_(new DevToolsProtocolHandler(this)),
412 handlers_frame_host_(nullptr), 405 handlers_frame_host_(nullptr),
413 current_frame_crashed_(false), 406 current_frame_crashed_(false),
414 pending_handle_(nullptr), 407 pending_handle_(nullptr),
415 frame_tree_node_(host->frame_tree_node()) { 408 frame_tree_node_(host->frame_tree_node()) {
416 DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher(); 409 DevToolsProtocolDispatcher* dispatcher = protocol_handler_->dispatcher();
417 dispatcher->SetDOMHandler(dom_handler_.get());
418 dispatcher->SetInputHandler(input_handler_.get()); 410 dispatcher->SetInputHandler(input_handler_.get());
419 dispatcher->SetInspectorHandler(inspector_handler_.get());
420 dispatcher->SetNetworkHandler(network_handler_.get());
421 dispatcher->SetSchemaHandler(schema_handler_.get());
422 dispatcher->SetServiceWorkerHandler(service_worker_handler_.get()); 411 dispatcher->SetServiceWorkerHandler(service_worker_handler_.get());
423 dispatcher->SetStorageHandler(storage_handler_.get()); 412 dispatcher->SetStorageHandler(storage_handler_.get());
424 dispatcher->SetTargetHandler(target_handler_.get()); 413 dispatcher->SetTargetHandler(target_handler_.get());
425 414
426 if (!host->GetParent()) { 415 if (!host->GetParent()) {
427 security_handler_.reset(new devtools::security::SecurityHandler()); 416 security_handler_.reset(new devtools::security::SecurityHandler());
428 page_handler_.reset(new devtools::page::PageHandler());
429 emulation_handler_.reset(
430 new devtools::emulation::EmulationHandler());
431 dispatcher->SetSecurityHandler(security_handler_.get()); 417 dispatcher->SetSecurityHandler(security_handler_.get());
432 dispatcher->SetPageHandler(page_handler_.get());
433 dispatcher->SetEmulationHandler(emulation_handler_.get());
434 } 418 }
435 419
436 SetPending(host); 420 SetPending(host);
437 CommitPending(); 421 CommitPending();
438 WebContentsObserver::Observe(WebContents::FromRenderFrameHost(host)); 422 WebContentsObserver::Observe(WebContents::FromRenderFrameHost(host));
439 423
440 if (web_contents() && web_contents()->GetCrashedStatus() != 424 if (web_contents() && web_contents()->GetCrashedStatus() !=
441 base::TERMINATION_STATUS_STILL_RUNNING) { 425 base::TERMINATION_STATUS_STILL_RUNNING) {
442 current_frame_crashed_ = true; 426 current_frame_crashed_ = true;
443 } 427 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
490 return contents ? contents->GetBrowserContext() : nullptr; 474 return contents ? contents->GetBrowserContext() : nullptr;
491 } 475 }
492 476
493 WebContents* RenderFrameDevToolsAgentHost::GetWebContents() { 477 WebContents* RenderFrameDevToolsAgentHost::GetWebContents() {
494 return web_contents(); 478 return web_contents();
495 } 479 }
496 480
497 void RenderFrameDevToolsAgentHost::Attach() { 481 void RenderFrameDevToolsAgentHost::Attach() {
498 session()->dispatcher()->setFallThroughForNotFound(true); 482 session()->dispatcher()->setFallThroughForNotFound(true);
499 483
484 if (!frame_tree_node_->parent()) {
485 emulation_handler_.reset(new protocol::EmulationHandler());
486 emulation_handler_->Wire(session()->dispatcher());
487 emulation_handler_->SetRenderFrameHost(handlers_frame_host_);
488 }
489
490 dom_handler_.reset(new protocol::DOMHandler());
491 dom_handler_->Wire(session()->dispatcher());
492 dom_handler_->SetRenderFrameHost(handlers_frame_host_);
493
494 inspector_handler_.reset(new protocol::InspectorHandler());
495 inspector_handler_->Wire(session()->dispatcher());
496 inspector_handler_->SetRenderFrameHost(handlers_frame_host_);
497
500 io_handler_.reset(new protocol::IOHandler(GetIOContext())); 498 io_handler_.reset(new protocol::IOHandler(GetIOContext()));
501 io_handler_->Wire(session()->dispatcher()); 499 io_handler_->Wire(session()->dispatcher());
502 500
501 network_handler_.reset(new protocol::NetworkHandler());
502 network_handler_->Wire(session()->dispatcher());
503 network_handler_->SetRenderFrameHost(handlers_frame_host_);
504
505 if (!frame_tree_node_->parent()) {
506 page_handler_.reset(new protocol::PageHandler());
507 page_handler_->Wire(session()->dispatcher());
508 page_handler_->SetRenderFrameHost(handlers_frame_host_);
509 }
510
511 schema_handler_.reset(new protocol::SchemaHandler());
512 schema_handler_->Wire(session()->dispatcher());
513
503 tracing_handler_.reset(new protocol::TracingHandler( 514 tracing_handler_.reset(new protocol::TracingHandler(
504 protocol::TracingHandler::Renderer, 515 protocol::TracingHandler::Renderer,
505 frame_tree_node_->frame_tree_node_id(), 516 frame_tree_node_->frame_tree_node_id(),
506 GetIOContext())); 517 GetIOContext()));
507 tracing_handler_->Wire(session()->dispatcher()); 518 tracing_handler_->Wire(session()->dispatcher());
508 519
509 if (current_) 520 if (current_)
510 current_->Attach(); 521 current_->Attach();
511 if (pending_) 522 if (pending_)
512 pending_->Attach(); 523 pending_->Attach();
513 OnClientAttached(); 524 OnClientAttached();
514 } 525 }
515 526
516 void RenderFrameDevToolsAgentHost::Detach() { 527 void RenderFrameDevToolsAgentHost::Detach() {
528 dom_handler_->Disable();
529 dom_handler_.reset();
530 if (emulation_handler_) {
531 emulation_handler_->Disable();
532 emulation_handler_.reset();
533 }
534 inspector_handler_->Disable();
535 inspector_handler_.reset();
517 io_handler_->Disable(); 536 io_handler_->Disable();
518 io_handler_.reset(); 537 io_handler_.reset();
538 network_handler_->Disable();
539 network_handler_.reset();
540 if (page_handler_) {
541 page_handler_->Disable();
542 page_handler_.reset();
543 }
544 schema_handler_->Disable();
545 schema_handler_.reset();
519 tracing_handler_->Disable(); 546 tracing_handler_->Disable();
520 tracing_handler_.reset(); 547 tracing_handler_.reset();
521 548
522 if (current_) 549 if (current_)
523 current_->Detach(); 550 current_->Detach();
524 if (pending_) 551 if (pending_)
525 pending_->Detach(); 552 pending_->Detach();
526 OnClientDetached(); 553 OnClientDetached();
527 } 554 }
528 555
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
573 return; 600 return;
574 601
575 frame_trace_recorder_.reset(new DevToolsFrameTraceRecorder()); 602 frame_trace_recorder_.reset(new DevToolsFrameTraceRecorder());
576 CreatePowerSaveBlocker(); 603 CreatePowerSaveBlocker();
577 } 604 }
578 605
579 void RenderFrameDevToolsAgentHost::OnClientDetached() { 606 void RenderFrameDevToolsAgentHost::OnClientDetached() {
580 #if defined(OS_ANDROID) 607 #if defined(OS_ANDROID)
581 power_save_blocker_.reset(); 608 power_save_blocker_.reset();
582 #endif 609 #endif
583 if (emulation_handler_)
584 emulation_handler_->Detached();
585 if (page_handler_)
586 page_handler_->Detached();
587 service_worker_handler_->Detached(); 610 service_worker_handler_->Detached();
588 target_handler_->Detached(); 611 target_handler_->Detached();
589 frame_trace_recorder_.reset(); 612 frame_trace_recorder_.reset();
590 in_navigation_protocol_message_buffer_.clear(); 613 in_navigation_protocol_message_buffer_.clear();
591 } 614 }
592 615
593 RenderFrameDevToolsAgentHost::~RenderFrameDevToolsAgentHost() { 616 RenderFrameDevToolsAgentHost::~RenderFrameDevToolsAgentHost() {
594 Instances::iterator it = std::find(g_instances.Get().begin(), 617 Instances::iterator it = std::find(g_instances.Get().begin(),
595 g_instances.Get().end(), 618 g_instances.Get().end(),
596 this); 619 this);
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 case base::TERMINATION_STATUS_ABNORMAL_TERMINATION: 813 case base::TERMINATION_STATUS_ABNORMAL_TERMINATION:
791 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED: 814 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED:
792 #if defined(OS_CHROMEOS) 815 #if defined(OS_CHROMEOS)
793 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED_BY_OOM: 816 case base::TERMINATION_STATUS_PROCESS_WAS_KILLED_BY_OOM:
794 #endif 817 #endif
795 case base::TERMINATION_STATUS_PROCESS_CRASHED: 818 case base::TERMINATION_STATUS_PROCESS_CRASHED:
796 #if defined(OS_ANDROID) 819 #if defined(OS_ANDROID)
797 case base::TERMINATION_STATUS_OOM_PROTECTED: 820 case base::TERMINATION_STATUS_OOM_PROTECTED:
798 #endif 821 #endif
799 case base::TERMINATION_STATUS_LAUNCH_FAILED: 822 case base::TERMINATION_STATUS_LAUNCH_FAILED:
800 inspector_handler_->TargetCrashed(); 823 if (inspector_handler_)
824 inspector_handler_->TargetCrashed();
801 current_frame_crashed_ = true; 825 current_frame_crashed_ = true;
802 break; 826 break;
803 default: 827 default:
804 inspector_handler_->TargetDetached("Render process gone."); 828 if (inspector_handler_)
829 inspector_handler_->TargetDetached("Render process gone.");
805 break; 830 break;
806 } 831 }
807 DCHECK(CheckConsistency()); 832 DCHECK(CheckConsistency());
808 } 833 }
809 834
810 bool RenderFrameDevToolsAgentHost::OnMessageReceived( 835 bool RenderFrameDevToolsAgentHost::OnMessageReceived(
811 const IPC::Message& message) { 836 const IPC::Message& message) {
812 if (!current_) 837 if (!current_)
813 return false; 838 return false;
814 if (message.type() == ViewHostMsg_SwapCompositorFrame::ID) 839 if (message.type() == ViewHostMsg_SwapCompositorFrame::ID)
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
906 pair.second.session_id, pair.first, pair.second.method, 931 pair.second.session_id, pair.first, pair.second.method,
907 pair.second.message); 932 pair.second.message);
908 } 933 }
909 in_navigation_protocol_message_buffer_.clear(); 934 in_navigation_protocol_message_buffer_.clear();
910 } 935 }
911 } 936 }
912 937
913 void RenderFrameDevToolsAgentHost::UpdateProtocolHandlers( 938 void RenderFrameDevToolsAgentHost::UpdateProtocolHandlers(
914 RenderFrameHostImpl* host) { 939 RenderFrameHostImpl* host) {
915 handlers_frame_host_ = host; 940 handlers_frame_host_ = host;
916 dom_handler_->SetRenderFrameHost(host); 941 if (dom_handler_)
942 dom_handler_->SetRenderFrameHost(host);
917 if (emulation_handler_) 943 if (emulation_handler_)
918 emulation_handler_->SetRenderFrameHost(host); 944 emulation_handler_->SetRenderFrameHost(host);
919 input_handler_->SetRenderWidgetHost( 945 input_handler_->SetRenderWidgetHost(
920 host ? host->GetRenderWidgetHost() : nullptr); 946 host ? host->GetRenderWidgetHost() : nullptr);
921 inspector_handler_->SetRenderFrameHost(host); 947 if (inspector_handler_)
922 network_handler_->SetRenderFrameHost(host); 948 inspector_handler_->SetRenderFrameHost(host);
949 if (network_handler_)
950 network_handler_->SetRenderFrameHost(host);
923 if (page_handler_) 951 if (page_handler_)
924 page_handler_->SetRenderFrameHost(host); 952 page_handler_->SetRenderFrameHost(host);
925 service_worker_handler_->SetRenderFrameHost(host); 953 service_worker_handler_->SetRenderFrameHost(host);
926 if (security_handler_) 954 if (security_handler_)
927 security_handler_->SetRenderFrameHost(host); 955 security_handler_->SetRenderFrameHost(host);
928 if (storage_handler_) 956 if (storage_handler_)
929 storage_handler_->SetRenderFrameHost(host); 957 storage_handler_->SetRenderFrameHost(host);
930 target_handler_->SetRenderFrameHost(host); 958 target_handler_->SetRenderFrameHost(host);
931 } 959 }
932 960
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after
1058 if (content::WebContents* contents = web_contents()) 1086 if (content::WebContents* contents = web_contents())
1059 return contents->GetLastActiveTime(); 1087 return contents->GetLastActiveTime();
1060 return base::TimeTicks(); 1088 return base::TimeTicks();
1061 } 1089 }
1062 1090
1063 void RenderFrameDevToolsAgentHost::OnSwapCompositorFrame( 1091 void RenderFrameDevToolsAgentHost::OnSwapCompositorFrame(
1064 const IPC::Message& message) { 1092 const IPC::Message& message) {
1065 ViewHostMsg_SwapCompositorFrame::Param param; 1093 ViewHostMsg_SwapCompositorFrame::Param param;
1066 if (!ViewHostMsg_SwapCompositorFrame::Read(&message, &param)) 1094 if (!ViewHostMsg_SwapCompositorFrame::Read(&message, &param))
1067 return; 1095 return;
1068 if (page_handler_) 1096 if (page_handler_) {
1069 page_handler_->OnSwapCompositorFrame( 1097 page_handler_->OnSwapCompositorFrame(
1070 std::move(std::get<1>(param).metadata)); 1098 std::move(std::get<1>(param).metadata));
1099 }
1071 if (input_handler_) 1100 if (input_handler_)
1072 input_handler_->OnSwapCompositorFrame(std::get<1>(param).metadata); 1101 input_handler_->OnSwapCompositorFrame(std::get<1>(param).metadata);
1073 if (frame_trace_recorder_ && tracing_handler_->did_initiate_recording()) { 1102 if (frame_trace_recorder_ && tracing_handler_->did_initiate_recording()) {
1074 frame_trace_recorder_->OnSwapCompositorFrame( 1103 frame_trace_recorder_->OnSwapCompositorFrame(
1075 current_ ? current_->host() : nullptr, std::get<1>(param).metadata); 1104 current_ ? current_->host() : nullptr, std::get<1>(param).metadata);
1076 } 1105 }
1077 } 1106 }
1078 1107
1079 void RenderFrameDevToolsAgentHost::SignalSynchronousSwapCompositorFrame( 1108 void RenderFrameDevToolsAgentHost::SignalSynchronousSwapCompositorFrame(
1080 RenderFrameHost* frame_host, 1109 RenderFrameHost* frame_host,
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
1140 RenderFrameHost* host) { 1169 RenderFrameHost* host) {
1141 return (current_ && current_->host() == host) || 1170 return (current_ && current_->host() == host) ||
1142 (pending_ && pending_->host() == host); 1171 (pending_ && pending_->host() == host);
1143 } 1172 }
1144 1173
1145 bool RenderFrameDevToolsAgentHost::IsChildFrame() { 1174 bool RenderFrameDevToolsAgentHost::IsChildFrame() {
1146 return current_ && current_->host()->GetParent(); 1175 return current_ && current_->host()->GetParent();
1147 } 1176 }
1148 1177
1149 } // namespace content 1178 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698