X-Git-Url: https://git.saurik.com/apple/javascriptcore.git/blobdiff_plain/2d39b0e377c0896910ee49ae70082ba665faf986..ed1e77d3adeb83d26fd1dfb16dd84cabdcefd250:/inspector/agents/InspectorAgent.cpp diff --git a/inspector/agents/InspectorAgent.cpp b/inspector/agents/InspectorAgent.cpp index be09611..0538690 100644 --- a/inspector/agents/InspectorAgent.cpp +++ b/inspector/agents/InspectorAgent.cpp @@ -31,15 +31,15 @@ #include "config.h" #include "InspectorAgent.h" -#if ENABLE(INSPECTOR) - +#include "InspectorEnvironment.h" #include "InspectorValues.h" #include "ScriptValue.h" namespace Inspector { -InspectorAgent::InspectorAgent() +InspectorAgent::InspectorAgent(InspectorEnvironment& environment) : InspectorAgentBase(ASCIILiteral("Inspector")) + , m_environment(environment) , m_enabled(false) { } @@ -48,29 +48,34 @@ InspectorAgent::~InspectorAgent() { } -void InspectorAgent::didCreateFrontendAndBackend(InspectorFrontendChannel* frontendChannel, InspectorBackendDispatcher* backendDispatcher) +void InspectorAgent::didCreateFrontendAndBackend(FrontendChannel* frontendChannel, BackendDispatcher* backendDispatcher) { - m_frontendDispatcher = std::make_unique(frontendChannel); - m_backendDispatcher = InspectorInspectorBackendDispatcher::create(backendDispatcher, this); + m_frontendDispatcher = std::make_unique(frontendChannel); + m_backendDispatcher = InspectorBackendDispatcher::create(backendDispatcher, this); } -void InspectorAgent::willDestroyFrontendAndBackend(InspectorDisconnectReason) +void InspectorAgent::willDestroyFrontendAndBackend(DisconnectReason) { m_frontendDispatcher = nullptr; - m_backendDispatcher.clear(); + m_backendDispatcher = nullptr; m_pendingEvaluateTestCommands.clear(); - ErrorString error; - disable(&error); + ErrorString unused; + disable(unused); } -void InspectorAgent::enable(ErrorString*) +void InspectorAgent::enable(ErrorString&) { m_enabled = true; if (m_pendingInspectData.first) - inspect(m_pendingInspectData.first, m_pendingInspectData.second); + inspect(m_pendingInspectData.first.copyRef(), m_pendingInspectData.second.copyRef()); + +#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS) + if (m_pendingExtraDomainsData) + m_frontendDispatcher->activateExtraDomains(m_pendingExtraDomainsData); +#endif for (auto& testCommand : m_pendingEvaluateTestCommands) { if (!m_frontendDispatcher) @@ -82,12 +87,17 @@ void InspectorAgent::enable(ErrorString*) m_pendingEvaluateTestCommands.clear(); } -void InspectorAgent::disable(ErrorString*) +void InspectorAgent::disable(ErrorString&) { m_enabled = false; } -void InspectorAgent::inspect(PassRefPtr objectToInspect, PassRefPtr hints) +void InspectorAgent::initialized(ErrorString&) +{ + m_environment.frontendInitialized(); +} + +void InspectorAgent::inspect(RefPtr&& objectToInspect, RefPtr&& hints) { if (m_enabled && m_frontendDispatcher) { m_frontendDispatcher->inspect(objectToInspect, hints); @@ -108,6 +118,35 @@ void InspectorAgent::evaluateForTestInFrontend(const String& script) m_pendingEvaluateTestCommands.append(script); } -} // namespace Inspector +#if ENABLE(INSPECTOR_ALTERNATE_DISPATCHERS) +void InspectorAgent::activateExtraDomain(const String& domainName) +{ + if (!m_enabled) { + if (!m_pendingExtraDomainsData) + m_pendingExtraDomainsData = Inspector::Protocol::Array::create(); + m_pendingExtraDomainsData->addItem(domainName); + return; + } -#endif // ENABLE(INSPECTOR) + Ref> domainNames = Inspector::Protocol::Array::create(); + domainNames->addItem(domainName); + m_frontendDispatcher->activateExtraDomains(WTF::move(domainNames)); +} + +void InspectorAgent::activateExtraDomains(const Vector& extraDomains) +{ + if (extraDomains.isEmpty()) + return; + + RefPtr> domainNames = Inspector::Protocol::Array::create(); + for (auto domainName : extraDomains) + domainNames->addItem(domainName); + + if (!m_enabled) + m_pendingExtraDomainsData = domainNames.release(); + else + m_frontendDispatcher->activateExtraDomains(domainNames.release()); +} +#endif + +} // namespace Inspector