react-native/ReactCommon/inspector/LegacyDebuggerAgent.cpp
Alexander Blom 0ac7bf29af Add Page, Runtime, Debugger agents
Summary: Runtime and Debugger agents are shipped with JSC so we reuse them. Messages are routed to them through the `LegacyDispatcher` which also handles translating their events. The Page agent emits the `Page.getResourceTree` method that the Chrome inspector expects.

Reviewed By: michalgr

Differential Revision: D4021499

fbshipit-source-id: a93d0add01cee732401f8e8db1d43205bfbd4cd4
2016-11-02 12:29:14 -07:00

46 lines
1.4 KiB
C++

// Copyright 2004-present Facebook. All Rights Reserved.
#include "LegacyDebuggerAgent.h"
#include "Util.h"
#include <JavaScriptCore/InjectedScript.h>
#include <JavaScriptCore/InjectedScriptManager.h>
#include <JavaScriptCore/JSGlobalObject.h>
namespace facebook {
namespace react {
using namespace Inspector;
LegacyDebuggerAgent::LegacyDebuggerAgent(InjectedScriptManager* injectedScriptManager, JSC::JSGlobalObject& globalObject, ConsoleAgent* consoleAgent)
: InspectorDebuggerAgent(injectedScriptManager)
, scriptDebugServer_(globalObject)
, consoleAgent_(consoleAgent) {}
void LegacyDebuggerAgent::startListeningScriptDebugServer() {
scriptDebugServer().addListener(this);
}
void LegacyDebuggerAgent::stopListeningScriptDebugServer(bool isBeingDestroyed) {
scriptDebugServer().removeListener(this, isBeingDestroyed);
}
InjectedScript LegacyDebuggerAgent::injectedScriptForEval(ErrorString* error, const int* executionContextId) {
if (executionContextId) {
*error = ASCIILiteral("Execution context id is not supported for JSContext inspection as there is only one execution context.");
return InjectedScript();
}
JSC::ExecState* exec = scriptDebugServer_.globalObject().globalExec();
return injectedScriptManager()->injectedScriptFor(exec);
}
void LegacyDebuggerAgent::breakpointActionLog(JSC::ExecState* exec, const String& message) {
// TODO: Hook up
// consoleAgent_->log(exec, toStdString(message));
}
}
}