|
1 | 1 | #include "network_agent.h"
|
| 2 | +#include <string> |
2 | 3 | #include "debug_utils-inl.h"
|
| 4 | +#include "env-inl.h" |
| 5 | +#include "inspector/network_resource_manager.h" |
3 | 6 | #include "inspector/protocol_helper.h"
|
4 | 7 | #include "network_inspector.h"
|
| 8 | +#include "node_metadata.h" |
5 | 9 | #include "util-inl.h"
|
| 10 | +#include "uv.h" |
| 11 | +#include "v8-context.h" |
6 | 12 | #include "v8.h"
|
7 | 13 |
|
8 | 14 | namespace node {
|
@@ -202,9 +208,15 @@ std::unique_ptr<protocol::Network::Response> createResponseFromObject(
|
202 | 208 | .build();
|
203 | 209 | }
|
204 | 210 |
|
205 |
| -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)) { |
208 | 220 | event_notifier_map_["requestWillBeSent"] = &NetworkAgent::requestWillBeSent;
|
209 | 221 | event_notifier_map_["responseReceived"] = &NetworkAgent::responseReceived;
|
210 | 222 | event_notifier_map_["loadingFailed"] = &NetworkAgent::loadingFailed;
|
@@ -329,10 +341,38 @@ protocol::DispatchResponse NetworkAgent::streamResourceContent(
|
329 | 341 | // If the request is finished, remove the entry.
|
330 | 342 | requests_.erase(in_requestId);
|
331 | 343 | }
|
332 |
| - |
333 | 344 | return protocol::DispatchResponse::Success();
|
334 | 345 | }
|
335 | 346 |
|
| 347 | +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 | + |
336 | 376 | void NetworkAgent::requestWillBeSent(v8::Local<v8::Context> context,
|
337 | 377 | v8::Local<v8::Object> params) {
|
338 | 378 | protocol::String request_id;
|
|
0 commit comments