Source/JavaScriptCore:
authordrousso@apple.com <drousso@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Apr 2019 00:33:29 +0000 (00:33 +0000)
committerdrousso@apple.com <drousso@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 11 Apr 2019 00:33:29 +0000 (00:33 +0000)
       Web Inspector: Inspector: lazily create the agent
       https://bugs.webkit.org/show_bug.cgi?id=195971
       <rdar://problem/49039645>

       Reviewed by Joseph Pecoraro.

       * inspector/JSGlobalObjectInspectorController.cpp:
       (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
       (Inspector::JSGlobalObjectInspectorController::connectFrontend):
       (Inspector::JSGlobalObjectInspectorController::appendExtraAgent):
       (Inspector::JSGlobalObjectInspectorController::createLazyAgents):

       * inspector/agents/InspectorAgent.h:
       * inspector/agents/InspectorAgent.cpp:

Source/WebCore:
Web Inspector: Inspector: lazily create the agent
https://bugs.webkit.org/show_bug.cgi?id=195971
<rdar://problem/49039645>

Reviewed by Joseph Pecoraro.

No change in functionality.

* inspector/InspectorController.h:
* inspector/InspectorController.cpp:
(WebCore::InspectorController::InspectorController):
(WebCore::InspectorController::createLazyAgents):
(WebCore::InspectorController::evaluateForTestInFrontend):
(WebCore::InspectorController::ensureInspectorAgent):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@244172 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp
Source/JavaScriptCore/inspector/agents/InspectorAgent.cpp
Source/JavaScriptCore/inspector/agents/InspectorAgent.h
Source/WebCore/ChangeLog
Source/WebCore/inspector/InspectorController.cpp
Source/WebCore/inspector/InspectorController.h

index 31f7324..8820e2a 100644 (file)
@@ -1,3 +1,20 @@
+2019-04-10  Devin Rousso  <drousso@apple.com>
+
+       Web Inspector: Inspector: lazily create the agent
+       https://bugs.webkit.org/show_bug.cgi?id=195971
+       <rdar://problem/49039645>
+
+       Reviewed by Joseph Pecoraro.
+
+       * inspector/JSGlobalObjectInspectorController.cpp:
+       (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
+       (Inspector::JSGlobalObjectInspectorController::connectFrontend):
+       (Inspector::JSGlobalObjectInspectorController::appendExtraAgent):
+       (Inspector::JSGlobalObjectInspectorController::createLazyAgents):
+
+       * inspector/agents/InspectorAgent.h:
+       * inspector/agents/InspectorAgent.cpp:
+
 2019-04-10  Saam Barati  <sbarati@apple.com>
 
         Work around an arm64_32 LLVM miscompile bug
index d306eb6..2b36d0d 100644 (file)
@@ -71,16 +71,12 @@ JSGlobalObjectInspectorController::JSGlobalObjectInspectorController(JSGlobalObj
 {
     auto context = jsAgentContext();
 
-    auto inspectorAgent = std::make_unique<InspectorAgent>(context);
     auto consoleAgent = std::make_unique<InspectorConsoleAgent>(context);
-
-    m_inspectorAgent = inspectorAgent.get();
     m_consoleAgent = consoleAgent.get();
-    m_consoleClient = std::make_unique<JSGlobalObjectConsoleClient>(m_consoleAgent);
-
-    m_agents.append(WTFMove(inspectorAgent));
     m_agents.append(WTFMove(consoleAgent));
 
+    m_consoleClient = std::make_unique<JSGlobalObjectConsoleClient>(m_consoleAgent);
+
     m_executionStopwatch->start();
 }
 
@@ -122,6 +118,7 @@ void JSGlobalObjectInspectorController::connectFrontend(FrontendChannel& fronten
     m_agents.didCreateFrontendAndBackend(nullptr, nullptr);
 
 #if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS)
+    ASSERT(m_inspectorAgent);
     m_inspectorAgent->activateExtraDomains(m_agents.extraDomains());
 
     if (m_augmentingClient)
@@ -277,6 +274,7 @@ void JSGlobalObjectInspectorController::appendExtraAgent(std::unique_ptr<Inspect
 
     m_agents.appendExtraAgent(WTFMove(agent));
 
+    ASSERT(m_inspectorAgent);
     m_inspectorAgent->activateExtraDomain(domainName);
 }
 #endif
@@ -307,6 +305,10 @@ void JSGlobalObjectInspectorController::createLazyAgents()
 
     auto context = jsAgentContext();
 
+    auto inspectorAgent = std::make_unique<InspectorAgent>(context);
+    m_inspectorAgent = inspectorAgent.get();
+    m_agents.append(WTFMove(inspectorAgent));
+
     m_agents.append(std::make_unique<JSGlobalObjectRuntimeAgent>(context));
 
     auto debuggerAgent = std::make_unique<JSGlobalObjectDebuggerAgent>(context, m_consoleAgent);
index c770e6d..c0b5c9a 100644 (file)
@@ -45,10 +45,6 @@ InspectorAgent::InspectorAgent(AgentContext& context)
 {
 }
 
-InspectorAgent::~InspectorAgent()
-{
-}
-
 void InspectorAgent::didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*)
 {
 }
index 26119c0..687bf75 100644 (file)
@@ -47,7 +47,7 @@ class JS_EXPORT_PRIVATE InspectorAgent final : public InspectorAgentBase, public
     WTF_MAKE_FAST_ALLOCATED;
 public:
     InspectorAgent(AgentContext&);
-    virtual ~InspectorAgent();
+    virtual ~InspectorAgent() = default;
 
     void didCreateFrontendAndBackend(FrontendRouter*, BackendDispatcher*) override;
     void willDestroyFrontendAndBackend(DisconnectReason) override;
index bf33bbb..20461d8 100644 (file)
@@ -1,3 +1,20 @@
+2019-04-10  Devin Rousso  <drousso@apple.com>
+
+        Web Inspector: Inspector: lazily create the agent
+        https://bugs.webkit.org/show_bug.cgi?id=195971
+        <rdar://problem/49039645>
+
+        Reviewed by Joseph Pecoraro.
+
+        No change in functionality.
+
+        * inspector/InspectorController.h:
+        * inspector/InspectorController.cpp:
+        (WebCore::InspectorController::InspectorController):
+        (WebCore::InspectorController::createLazyAgents):
+        (WebCore::InspectorController::evaluateForTestInFrontend):
+        (WebCore::InspectorController::ensureInspectorAgent):
+
 2019-04-10  Megan Gardner  <megan_gardner@apple.com>
 
         Remove unneeded extern C
index 6b31890..71a0761 100644 (file)
@@ -106,11 +106,6 @@ InspectorController::InspectorController(Page& page, InspectorClient* inspectorC
 
     auto pageContext = pageAgentContext();
 
-    auto inspectorAgentPtr = std::make_unique<InspectorAgent>(pageContext);
-    m_inspectorAgent = inspectorAgentPtr.get();
-    m_instrumentingAgents->setInspectorAgent(m_inspectorAgent);
-    m_agents.append(WTFMove(inspectorAgentPtr));
-
     auto consoleAgent = std::make_unique<PageConsoleAgent>(pageContext);
     m_instrumentingAgents->setWebConsoleAgent(consoleAgent.get());
     m_agents.append(WTFMove(consoleAgent));
@@ -157,6 +152,7 @@ void InspectorController::createLazyAgents()
 
     auto pageContext = pageAgentContext();
 
+    ensureInspectorAgent();
     ensurePageAgent();
 
     m_agents.append(std::make_unique<PageRuntimeAgent>(pageContext));
@@ -359,7 +355,7 @@ void InspectorController::setIsUnderTest(bool value)
 
 void InspectorController::evaluateForTestInFrontend(const String& script)
 {
-    m_inspectorAgent->evaluateForTestInFrontend(script);
+    ensureInspectorAgent().evaluateForTestInFrontend(script);
 }
 
 void InspectorController::drawHighlight(GraphicsContext& context) const
@@ -420,6 +416,18 @@ void InspectorController::setIndicating(bool indicating)
 #endif
 }
 
+InspectorAgent& InspectorController::ensureInspectorAgent()
+{
+    if (!m_inspectorAgent) {
+        auto pageContext = pageAgentContext();
+        auto inspectorAgent = std::make_unique<InspectorAgent>(pageContext);
+        m_inspectorAgent = inspectorAgent.get();
+        m_instrumentingAgents->setInspectorAgent(m_inspectorAgent);
+        m_agents.append(WTFMove(inspectorAgent));
+    }
+    return *m_inspectorAgent;
+}
+
 InspectorDOMAgent& InspectorController::ensureDOMAgent()
 {
     if (!m_inspectorDOMAgent) {
index 71f2642..a511ec5 100644 (file)
@@ -106,6 +106,7 @@ public:
     InspectorClient* inspectorClient() const { return m_inspectorClient; }
     InspectorFrontendClient* inspectorFrontendClient() const { return m_inspectorFrontendClient; }
 
+    Inspector::InspectorAgent& ensureInspectorAgent();
     InspectorDOMAgent& ensureDOMAgent();
     WEBCORE_EXPORT InspectorPageAgent& ensurePageAgent();
 
@@ -138,9 +139,8 @@ private:
     InspectorClient* m_inspectorClient;
     InspectorFrontendClient* m_inspectorFrontendClient { nullptr };
 
-    Inspector::InspectorAgent* m_inspectorAgent { nullptr };
-
     // Lazy, but also on-demand agents.
+    Inspector::InspectorAgent* m_inspectorAgent { nullptr };
     InspectorDOMAgent* m_inspectorDOMAgent { nullptr };
     InspectorPageAgent* m_inspectorPageAgent { nullptr };