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

Side by Side Diff: third_party/WebKit/Source/web/WebDevToolsAgentImpl.cpp

Issue 1746393003: [DevTools] Postpone more agents instantiation until attached. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 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
« no previous file with comments | « third_party/WebKit/Source/web/WebDevToolsAgentImpl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010-2011 Google Inc. All rights reserved. 2 * Copyright (C) 2010-2011 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
336 , m_overlay(overlay) 336 , m_overlay(overlay)
337 , m_inspectedFrames(InspectedFrames::create(m_webLocalFrameImpl->frame())) 337 , m_inspectedFrames(InspectedFrames::create(m_webLocalFrameImpl->frame()))
338 , m_inspectorAgent(nullptr) 338 , m_inspectorAgent(nullptr)
339 , m_domAgent(nullptr) 339 , m_domAgent(nullptr)
340 , m_pageAgent(nullptr) 340 , m_pageAgent(nullptr)
341 , m_resourceAgent(nullptr) 341 , m_resourceAgent(nullptr)
342 , m_layerTreeAgent(nullptr) 342 , m_layerTreeAgent(nullptr)
343 , m_tracingAgent(nullptr) 343 , m_tracingAgent(nullptr)
344 , m_pageRuntimeAgent(nullptr) 344 , m_pageRuntimeAgent(nullptr)
345 , m_pageConsoleAgent(nullptr) 345 , m_pageConsoleAgent(nullptr)
346 , m_layerTreeId(0)
347 , m_inspectedFrameDidCommitLoad(false)
346 , m_agents(m_instrumentingAgents.get()) 348 , m_agents(m_instrumentingAgents.get())
347 , m_deferredAgentsInitialized(false) 349 , m_deferredAgentsInitialized(false)
348 , m_sessionId(0) 350 , m_sessionId(0)
349 , m_stateMuted(false) 351 , m_stateMuted(false)
350 { 352 {
351 ASSERT(isMainThread()); 353 ASSERT(isMainThread());
352 ASSERT(m_webLocalFrameImpl->frame()); 354 ASSERT(m_webLocalFrameImpl->frame());
353 355
354 long processId = Platform::current()->getUniqueIdForProcess(); 356 long processId = Platform::current()->getUniqueIdForProcess();
355 ASSERT(processId > 0); 357 ASSERT(processId > 0);
356 IdentifiersFactory::setProcessId(processId); 358 IdentifiersFactory::setProcessId(processId);
357 359
358 ClientMessageLoopAdapter::ensureMainThreadDebuggerCreated(m_client); 360 ClientMessageLoopAdapter::ensureMainThreadDebuggerCreated(m_client);
359 MainThreadDebugger* mainThreadDebugger = MainThreadDebugger::instance();
360 361
361 OwnPtrWillBeRawPtr<InspectorInspectorAgent> inspectorAgentPtr(InspectorInspe ctorAgent::create()); 362 OwnPtrWillBeRawPtr<InspectorInspectorAgent> inspectorAgentPtr(InspectorInspe ctorAgent::create());
362 m_inspectorAgent = inspectorAgentPtr.get(); 363 m_inspectorAgent = inspectorAgentPtr.get();
363 m_agents.append(inspectorAgentPtr.release()); 364 m_agents.append(inspectorAgentPtr.release());
364 365
365 OwnPtrWillBeRawPtr<PageRuntimeAgent> pageRuntimeAgentPtr(PageRuntimeAgent::c reate(this, mainThreadDebugger->debugger(), m_inspectedFrames.get())); 366 OwnPtrWillBeRawPtr<InspectorWorkerAgent> workerAgentPtr = InspectorWorkerAge nt::create();
366 m_pageRuntimeAgent = pageRuntimeAgentPtr.get(); 367 m_workerAgent = workerAgentPtr.get();
367 m_agents.append(pageRuntimeAgentPtr.release());
368
369 v8::Isolate* isolate = V8PerIsolateData::mainThreadIsolate();
370 OwnPtrWillBeRawPtr<InspectorDOMAgent> domAgentPtr(InspectorDOMAgent::create( isolate, m_inspectedFrames.get(), m_pageRuntimeAgent->v8Agent(), m_overlay.get() ));
371 m_domAgent = domAgentPtr.get();
372 m_agents.append(domAgentPtr.release());
373
374 OwnPtrWillBeRawPtr<InspectorLayerTreeAgent> layerTreeAgentPtr(InspectorLayer TreeAgent::create(m_inspectedFrames.get()));
375 m_layerTreeAgent = layerTreeAgentPtr.get();
376 m_agents.append(layerTreeAgentPtr.release());
377
378 OwnPtrWillBeRawPtr<PageConsoleAgent> pageConsoleAgentPtr = PageConsoleAgent: :create(m_pageRuntimeAgent->v8Agent(), m_domAgent, m_inspectedFrames.get());
379 m_pageConsoleAgent = pageConsoleAgentPtr.get();
380
381 OwnPtrWillBeRawPtr<InspectorWorkerAgent> workerAgentPtr = InspectorWorkerAge nt::create(pageConsoleAgentPtr.get());
382
383 OwnPtrWillBeRawPtr<InspectorTracingAgent> tracingAgentPtr = InspectorTracing Agent::create(this, workerAgentPtr.get(), m_inspectedFrames.get());
384 m_tracingAgent = tracingAgentPtr.get();
385 m_agents.append(tracingAgentPtr.release());
386
387 m_agents.append(workerAgentPtr.release()); 368 m_agents.append(workerAgentPtr.release());
388 m_agents.append(pageConsoleAgentPtr.release());
389 } 369 }
390 370
391 WebDevToolsAgentImpl::~WebDevToolsAgentImpl() 371 WebDevToolsAgentImpl::~WebDevToolsAgentImpl()
392 { 372 {
393 ASSERT(m_hasBeenDisposed); 373 ASSERT(m_hasBeenDisposed);
394 } 374 }
395 375
396 void WebDevToolsAgentImpl::dispose() 376 void WebDevToolsAgentImpl::dispose()
397 { 377 {
398 // Explicitly dispose of the agent before destructing to ensure 378 // Explicitly dispose of the agent before destructing to ensure
(...skipping 24 matching lines...) Expand all
423 visitor->trace(m_instrumentingAgents); 403 visitor->trace(m_instrumentingAgents);
424 visitor->trace(m_resourceContentLoader); 404 visitor->trace(m_resourceContentLoader);
425 visitor->trace(m_overlay); 405 visitor->trace(m_overlay);
426 visitor->trace(m_inspectedFrames); 406 visitor->trace(m_inspectedFrames);
427 visitor->trace(m_inspectorAgent); 407 visitor->trace(m_inspectorAgent);
428 visitor->trace(m_domAgent); 408 visitor->trace(m_domAgent);
429 visitor->trace(m_pageAgent); 409 visitor->trace(m_pageAgent);
430 visitor->trace(m_resourceAgent); 410 visitor->trace(m_resourceAgent);
431 visitor->trace(m_layerTreeAgent); 411 visitor->trace(m_layerTreeAgent);
432 visitor->trace(m_tracingAgent); 412 visitor->trace(m_tracingAgent);
413 visitor->trace(m_workerAgent);
433 visitor->trace(m_pageRuntimeAgent); 414 visitor->trace(m_pageRuntimeAgent);
434 visitor->trace(m_pageConsoleAgent); 415 visitor->trace(m_pageConsoleAgent);
435 visitor->trace(m_agents); 416 visitor->trace(m_agents);
436 } 417 }
437 418
438 void WebDevToolsAgentImpl::willBeDestroyed() 419 void WebDevToolsAgentImpl::willBeDestroyed()
439 { 420 {
440 ASSERT(m_webLocalFrameImpl->frame()); 421 ASSERT(m_webLocalFrameImpl->frame());
441 ASSERT(m_inspectedFrames->root()->view()); 422 ASSERT(m_inspectedFrames->root()->view());
442 423
443 detach(); 424 detach();
444 m_resourceContentLoader->dispose(); 425 m_resourceContentLoader->dispose();
445 m_agents.discardAgents(); 426 m_agents.discardAgents();
446 m_instrumentingAgents->reset(); 427 m_instrumentingAgents->reset();
447 } 428 }
448 429
449 void WebDevToolsAgentImpl::initializeDeferredAgents() 430 void WebDevToolsAgentImpl::initializeDeferredAgents()
450 { 431 {
451 if (m_deferredAgentsInitialized) 432 if (m_deferredAgentsInitialized)
452 return; 433 return;
453 m_deferredAgentsInitialized = true; 434 m_deferredAgentsInitialized = true;
454 435
436 v8::Isolate* isolate = V8PerIsolateData::mainThreadIsolate();
437 MainThreadDebugger* mainThreadDebugger = MainThreadDebugger::instance();
438
439 OwnPtrWillBeRawPtr<PageRuntimeAgent> pageRuntimeAgentPtr(PageRuntimeAgent::c reate(this, mainThreadDebugger->debugger(), m_inspectedFrames.get()));
440 m_pageRuntimeAgent = pageRuntimeAgentPtr.get();
441 m_agents.append(pageRuntimeAgentPtr.release());
442
455 OwnPtrWillBeRawPtr<InspectorResourceAgent> resourceAgentPtr(InspectorResourc eAgent::create(m_inspectedFrames.get())); 443 OwnPtrWillBeRawPtr<InspectorResourceAgent> resourceAgentPtr(InspectorResourc eAgent::create(m_inspectedFrames.get()));
456 m_resourceAgent = resourceAgentPtr.get(); 444 m_resourceAgent = resourceAgentPtr.get();
457 m_agents.append(resourceAgentPtr.release()); 445 m_agents.append(resourceAgentPtr.release());
458 446
447 OwnPtrWillBeRawPtr<InspectorDOMAgent> domAgentPtr(InspectorDOMAgent::create( isolate, m_inspectedFrames.get(), m_pageRuntimeAgent->v8Agent(), m_overlay.get() ));
448 m_domAgent = domAgentPtr.get();
449 m_agents.append(domAgentPtr.release());
450
459 OwnPtrWillBeRawPtr<InspectorCSSAgent> cssAgentPtr(InspectorCSSAgent::create( m_domAgent, m_inspectedFrames.get(), m_resourceAgent, m_resourceContentLoader.ge t())); 451 OwnPtrWillBeRawPtr<InspectorCSSAgent> cssAgentPtr(InspectorCSSAgent::create( m_domAgent, m_inspectedFrames.get(), m_resourceAgent, m_resourceContentLoader.ge t()));
460 InspectorCSSAgent* cssAgent = cssAgentPtr.get(); 452 InspectorCSSAgent* cssAgent = cssAgentPtr.get();
461 m_agents.append(cssAgentPtr.release()); 453 m_agents.append(cssAgentPtr.release());
462 454
463 m_agents.append(InspectorAnimationAgent::create(m_inspectedFrames.get(), m_d omAgent, cssAgent, m_pageRuntimeAgent->v8Agent())); 455 m_agents.append(InspectorAnimationAgent::create(m_inspectedFrames.get(), m_d omAgent, cssAgent, m_pageRuntimeAgent->v8Agent()));
464 456
465 m_agents.append(InspectorMemoryAgent::create()); 457 m_agents.append(InspectorMemoryAgent::create());
466 458
467 m_agents.append(InspectorApplicationCacheAgent::create(m_inspectedFrames.get ())); 459 m_agents.append(InspectorApplicationCacheAgent::create(m_inspectedFrames.get ()));
468 m_agents.append(InspectorIndexedDBAgent::create(m_inspectedFrames.get())); 460 m_agents.append(InspectorIndexedDBAgent::create(m_inspectedFrames.get()));
469 461
470 OwnPtrWillBeRawPtr<InspectorDebuggerAgent> debuggerAgentPtr(PageDebuggerAgen t::create(MainThreadDebugger::instance(), m_inspectedFrames.get(), m_pageRuntime Agent->v8Agent())); 462 OwnPtrWillBeRawPtr<InspectorDebuggerAgent> debuggerAgentPtr(PageDebuggerAgen t::create(MainThreadDebugger::instance(), m_inspectedFrames.get(), m_pageRuntime Agent->v8Agent()));
471 InspectorDebuggerAgent* debuggerAgent = debuggerAgentPtr.get(); 463 InspectorDebuggerAgent* debuggerAgent = debuggerAgentPtr.get();
472 m_agents.append(debuggerAgentPtr.release()); 464 m_agents.append(debuggerAgentPtr.release());
473 465
474 v8::Isolate* isolate = V8PerIsolateData::mainThreadIsolate();
475
476 m_agents.append(InspectorDOMDebuggerAgent::create(isolate, m_domAgent, m_pag eRuntimeAgent->v8Agent(), debuggerAgent->v8Agent())); 466 m_agents.append(InspectorDOMDebuggerAgent::create(isolate, m_domAgent, m_pag eRuntimeAgent->v8Agent(), debuggerAgent->v8Agent()));
477 m_agents.append(InspectorInputAgent::create(m_inspectedFrames.get())); 467 m_agents.append(InspectorInputAgent::create(m_inspectedFrames.get()));
478 m_agents.append(InspectorProfilerAgent::create(MainThreadDebugger::instance( )->debugger(), m_overlay.get())); 468 m_agents.append(InspectorProfilerAgent::create(MainThreadDebugger::instance( )->debugger(), m_overlay.get()));
479 m_agents.append(InspectorHeapProfilerAgent::create(isolate, m_pageRuntimeAge nt->v8Agent())); 469 m_agents.append(InspectorHeapProfilerAgent::create(isolate, m_pageRuntimeAge nt->v8Agent()));
480 470
471 OwnPtrWillBeRawPtr<InspectorTracingAgent> tracingAgentPtr = InspectorTracing Agent::create(this, m_workerAgent.get(), m_inspectedFrames.get());
472 m_tracingAgent = tracingAgentPtr.get();
473 m_tracingAgent->setLayerTreeId(m_layerTreeId);
474 m_agents.append(tracingAgentPtr.release());
475
476 OwnPtrWillBeRawPtr<InspectorLayerTreeAgent> layerTreeAgentPtr(InspectorLayer TreeAgent::create(m_inspectedFrames.get()));
477 m_layerTreeAgent = layerTreeAgentPtr.get();
478 m_agents.append(layerTreeAgentPtr.release());
479
481 OwnPtrWillBeRawPtr<InspectorPageAgent> pageAgentPtr(InspectorPageAgent::crea te(m_inspectedFrames.get(), this, m_resourceContentLoader.get(), debuggerAgent)) ; 480 OwnPtrWillBeRawPtr<InspectorPageAgent> pageAgentPtr(InspectorPageAgent::crea te(m_inspectedFrames.get(), this, m_resourceContentLoader.get(), debuggerAgent)) ;
482 m_pageAgent = pageAgentPtr.get(); 481 m_pageAgent = pageAgentPtr.get();
483 m_agents.append(pageAgentPtr.release()); 482 m_agents.append(pageAgentPtr.release());
484 483
485 m_pageConsoleAgent->setDebuggerAgent(debuggerAgent->v8Agent()); 484 OwnPtrWillBeRawPtr<PageConsoleAgent> pageConsoleAgentPtr = PageConsoleAgent: :create(m_pageRuntimeAgent->v8Agent(), debuggerAgent->v8Agent(), m_domAgent, m_i nspectedFrames.get());
485 m_pageConsoleAgent = pageConsoleAgentPtr.get();
486 m_agents.append(pageConsoleAgentPtr.release());
486 487
488 m_workerAgent->setPageConsoleAgent(m_pageConsoleAgent);
487 m_pageRuntimeAgent->v8Agent()->setClearConsoleCallback(bind<>(&InspectorCons oleAgent::clearAllMessages, m_pageConsoleAgent.get())); 489 m_pageRuntimeAgent->v8Agent()->setClearConsoleCallback(bind<>(&InspectorCons oleAgent::clearAllMessages, m_pageConsoleAgent.get()));
488 m_pageRuntimeAgent->v8Agent()->setInspectObjectCallback(bind<PassOwnPtr<prot ocol::Runtime::RemoteObject>, PassRefPtr<protocol::DictionaryValue>>(&InspectorI nspectorAgent::inspect, m_inspectorAgent.get())); 490 m_pageRuntimeAgent->v8Agent()->setInspectObjectCallback(bind<PassOwnPtr<prot ocol::Runtime::RemoteObject>, PassRefPtr<protocol::DictionaryValue>>(&InspectorI nspectorAgent::inspect, m_inspectorAgent.get()));
489 491
490 if (m_overlay) 492 if (m_overlay)
491 m_overlay->init(cssAgent, debuggerAgent, m_domAgent.get()); 493 m_overlay->init(cssAgent, debuggerAgent, m_domAgent.get());
492 } 494 }
493 495
494 void WebDevToolsAgentImpl::registerAgent(PassOwnPtrWillBeRawPtr<InspectorAgent> agent) 496 void WebDevToolsAgentImpl::registerAgent(PassOwnPtrWillBeRawPtr<InspectorAgent> agent)
495 { 497 {
496 m_agents.append(agent); 498 m_agents.append(agent);
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 m_attached = false; 559 m_attached = false;
558 } 560 }
559 561
560 void WebDevToolsAgentImpl::continueProgram() 562 void WebDevToolsAgentImpl::continueProgram()
561 { 563 {
562 ClientMessageLoopAdapter::continueProgram(); 564 ClientMessageLoopAdapter::continueProgram();
563 } 565 }
564 566
565 void WebDevToolsAgentImpl::didCommitLoadForLocalFrame(LocalFrame* frame) 567 void WebDevToolsAgentImpl::didCommitLoadForLocalFrame(LocalFrame* frame)
566 { 568 {
569 if (frame == m_inspectedFrames->root())
570 m_inspectedFrameDidCommitLoad = true;
567 m_resourceContentLoader->didCommitLoadForLocalFrame(frame); 571 m_resourceContentLoader->didCommitLoadForLocalFrame(frame);
568 m_agents.didCommitLoadForLocalFrame(frame); 572 m_agents.didCommitLoadForLocalFrame(frame);
569 } 573 }
570 574
571 bool WebDevToolsAgentImpl::screencastEnabled() 575 bool WebDevToolsAgentImpl::screencastEnabled()
572 { 576 {
573 return m_pageAgent && m_pageAgent->screencastEnabled(); 577 return m_pageAgent && m_pageAgent->screencastEnabled();
574 } 578 }
575 579
576 void WebDevToolsAgentImpl::willAddPageOverlay(const GraphicsLayer* layer) 580 void WebDevToolsAgentImpl::willAddPageOverlay(const GraphicsLayer* layer)
577 { 581 {
578 m_layerTreeAgent->willAddPageOverlay(layer); 582 if (m_layerTreeAgent)
583 m_layerTreeAgent->willAddPageOverlay(layer);
579 } 584 }
580 585
581 void WebDevToolsAgentImpl::didRemovePageOverlay(const GraphicsLayer* layer) 586 void WebDevToolsAgentImpl::didRemovePageOverlay(const GraphicsLayer* layer)
582 { 587 {
583 m_layerTreeAgent->didRemovePageOverlay(layer); 588 if (m_layerTreeAgent)
589 m_layerTreeAgent->didRemovePageOverlay(layer);
584 } 590 }
585 591
586 void WebDevToolsAgentImpl::layerTreeViewChanged(WebLayerTreeView* layerTreeView) 592 void WebDevToolsAgentImpl::layerTreeViewChanged(WebLayerTreeView* layerTreeView)
587 { 593 {
588 m_tracingAgent->setLayerTreeId(layerTreeView ? layerTreeView->layerTreeId() : 0); 594 m_layerTreeId = layerTreeView ? layerTreeView->layerTreeId() : 0;
595 if (m_tracingAgent)
596 m_tracingAgent->setLayerTreeId(m_layerTreeId);
589 } 597 }
590 598
591 void WebDevToolsAgentImpl::enableTracing(const String& categoryFilter) 599 void WebDevToolsAgentImpl::enableTracing(const String& categoryFilter)
592 { 600 {
593 m_client->enableTracing(categoryFilter); 601 m_client->enableTracing(categoryFilter);
594 } 602 }
595 603
596 void WebDevToolsAgentImpl::disableTracing() 604 void WebDevToolsAgentImpl::disableTracing()
597 { 605 {
598 m_client->disableTracing(); 606 m_client->disableTracing();
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
673 681
674 void WebDevToolsAgentImpl::resumeStartup() 682 void WebDevToolsAgentImpl::resumeStartup()
675 { 683 {
676 // If we've paused for createWindow, handle it ourselves. 684 // If we've paused for createWindow, handle it ourselves.
677 if (ClientMessageLoopAdapter::resumeForCreateWindow()) 685 if (ClientMessageLoopAdapter::resumeForCreateWindow())
678 return; 686 return;
679 // Otherwise, pass to the client (embedded workers do it differently). 687 // Otherwise, pass to the client (embedded workers do it differently).
680 m_client->resumeStartup(); 688 m_client->resumeStartup();
681 } 689 }
682 690
691 bool WebDevToolsAgentImpl::didCommitLoadFired()
692 {
693 return m_inspectedFrameDidCommitLoad;
694 }
695
683 void WebDevToolsAgentImpl::pageLayoutInvalidated(bool resized) 696 void WebDevToolsAgentImpl::pageLayoutInvalidated(bool resized)
684 { 697 {
685 if (m_overlay) 698 if (m_overlay)
686 m_overlay->pageLayoutInvalidated(resized); 699 m_overlay->pageLayoutInvalidated(resized);
687 } 700 }
688 701
689 void WebDevToolsAgentImpl::setPausedInDebuggerMessage(const String& message) 702 void WebDevToolsAgentImpl::setPausedInDebuggerMessage(const String& message)
690 { 703 {
691 if (m_overlay) 704 if (m_overlay)
692 m_overlay->setPausedInDebuggerMessage(message); 705 m_overlay->setPausedInDebuggerMessage(message);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
754 if (!protocol::Dispatcher::getCommandName(message, &commandName)) 767 if (!protocol::Dispatcher::getCommandName(message, &commandName))
755 return false; 768 return false;
756 return commandName == "Debugger.pause" 769 return commandName == "Debugger.pause"
757 || commandName == "Debugger.setBreakpoint" 770 || commandName == "Debugger.setBreakpoint"
758 || commandName == "Debugger.setBreakpointByUrl" 771 || commandName == "Debugger.setBreakpointByUrl"
759 || commandName == "Debugger.removeBreakpoint" 772 || commandName == "Debugger.removeBreakpoint"
760 || commandName == "Debugger.setBreakpointsActive"; 773 || commandName == "Debugger.setBreakpointsActive";
761 } 774 }
762 775
763 } // namespace blink 776 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/web/WebDevToolsAgentImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698