inspector: initial support for Network.loadNetworkResource · nodejs/node@85d6a28

11

#include "network_agent.h"

2+

#include <string>

23

#include "debug_utils-inl.h"

4+

#include "env-inl.h"

5+

#include "inspector/network_resource_manager.h"

36

#include "inspector/protocol_helper.h"

47

#include "network_inspector.h"

8+

#include "node_metadata.h"

59

#include "util-inl.h"

10+

#include "uv.h"

11+

#include "v8-context.h"

612

#include "v8.h"

713814

namespace node {

@@ -202,9 +208,15 @@ std::unique_ptr<protocol::Network::Response> createResponseFromObject(

202208

.build();

203209

}

204210205-

NetworkAgent::NetworkAgent(NetworkInspector* inspector,

206-

v8_inspector::V8Inspector* v8_inspector)

207-

: inspector_(inspector), v8_inspector_(v8_inspector) {

211+

NetworkAgent::NetworkAgent(

212+

NetworkInspector* inspector,

213+

v8_inspector::V8Inspector* v8_inspector,

214+

Environment* env,

215+

std::shared_ptr<NetworkResourceManager> network_resource_manager)

216+

: inspector_(inspector),

217+

v8_inspector_(v8_inspector),

218+

env_(env),

219+

network_resource_manager_(std::move(network_resource_manager)) {

208220

event_notifier_map_["requestWillBeSent"] = &NetworkAgent::requestWillBeSent;

209221

event_notifier_map_["responseReceived"] = &NetworkAgent::responseReceived;

210222

event_notifier_map_["loadingFailed"] = &NetworkAgent::loadingFailed;

@@ -329,10 +341,38 @@ protocol::DispatchResponse NetworkAgent::streamResourceContent(

329341

// If the request is finished, remove the entry.

330342

requests_.erase(in_requestId);

331343

}

332-333344

return protocol::DispatchResponse::Success();

334345

}

335346347+

protocol::DispatchResponse NetworkAgent::loadNetworkResource(

348+

const protocol::String& in_url,

349+

std::unique_ptr<protocol::Network::LoadNetworkResourcePageResult>*

350+

out_resource) {

351+

if (!env_->options()->experimental_inspector_network_resource) {

352+

return protocol::DispatchResponse::ServerError(

353+

"Network resource loading is not enabled. This feature is "

354+

"experimental and requires --experimental-inspector-network-resource "

355+

"flag to be set.");

356+

}

357+

CHECK_NOT_NULL(network_resource_manager_);

358+

std::string data = network_resource_manager_->Get(in_url);

359+

bool found = !data.empty();

360+

if (found) {

361+

auto result = protocol::Network::LoadNetworkResourcePageResult::create()

362+

.setSuccess(true)

363+

.setStream(in_url)

364+

.build();

365+

*out_resource = std::move(result);

366+

return protocol::DispatchResponse::Success();

367+

} else {

368+

auto result = protocol::Network::LoadNetworkResourcePageResult::create()

369+

.setSuccess(false)

370+

.build();

371+

*out_resource = std::move(result);

372+

return protocol::DispatchResponse::Success();

373+

}

374+

}

375+336376

void NetworkAgent::requestWillBeSent(v8::Local<v8::Context> context,

337377

v8::Local<v8::Object> params) {

338378

protocol::String request_id;