Commit c71e9795 authored by Johannes Henkel's avatar Johannes Henkel Committed by Commit Bot

Port inspector_network_agent to use AgentStateField fields.

Change-Id: I7fc667a8bfd72c8896848a9443f8ff6abc2cdf38
Reviewed-on: https://chromium-review.googlesource.com/1159240
Commit-Queue: Johannes Henkel <johannes@chromium.org>
Reviewed-by: default avatarAndrey Kosyakov <caseq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#580016}
parent 43fd1f40
...@@ -90,29 +90,14 @@ using GetResponseBodyCallback = ...@@ -90,29 +90,14 @@ using GetResponseBodyCallback =
protocol::Network::Backend::GetResponseBodyCallback; protocol::Network::Backend::GetResponseBodyCallback;
using protocol::Response; using protocol::Response;
namespace NetworkAgentState {
static const char kNetworkAgentEnabled[] = "networkAgentEnabled";
static const char kExtraRequestHeaders[] = "extraRequestHeaders";
static const char kCacheDisabled[] = "cacheDisabled";
static const char kBypassServiceWorker[] = "bypassServiceWorker";
static const char kBlockedURLs[] = "blockedURLs";
static const char kTotalBufferSize[] = "totalBufferSize";
static const char kResourceBufferSize[] = "resourceBufferSize";
static const char kMaxPostDataSize[] = "maxPostBodySize";
} // namespace NetworkAgentState
namespace { namespace {
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
// 10MB constexpr int kDefaultTotalBufferSize = 10 * 1000 * 1000; // 10 MB
static size_t g_maximum_total_buffer_size = 10 * 1000 * 1000; constexpr int kDefaultResourceBufferSize = 5 * 1000 * 1000; // 5 MB
// 5MB
static size_t g_maximum_resource_buffer_size = 5 * 1000 * 1000;
#else #else
// 100MB constexpr int kDefaultTotalBufferSize = 100 * 1000 * 1000; // 100 MB
static size_t g_maximum_total_buffer_size = 100 * 1000 * 1000; constexpr int kDefaultResourceBufferSize = 10 * 1000 * 1000; // 10 MB
// 10MB
static size_t g_maximum_resource_buffer_size = 10 * 1000 * 1000;
#endif #endif
// Pattern may contain stars ('*') which match to any (possibly empty) string. // Pattern may contain stars ('*') which match to any (possibly empty) string.
...@@ -427,13 +412,8 @@ String GetReferrerPolicy(ReferrerPolicy policy) { ...@@ -427,13 +412,8 @@ String GetReferrerPolicy(ReferrerPolicy policy) {
} // namespace } // namespace
void InspectorNetworkAgent::Restore() { void InspectorNetworkAgent::Restore() {
if (state_->booleanProperty(NetworkAgentState::kNetworkAgentEnabled, false)) { if (enabled_.Get())
Enable(state_->integerProperty(NetworkAgentState::kTotalBufferSize, Enable();
g_maximum_total_buffer_size),
state_->integerProperty(NetworkAgentState::kResourceBufferSize,
g_maximum_resource_buffer_size),
state_->integerProperty(NetworkAgentState::kMaxPostDataSize, 0));
}
} }
static std::unique_ptr<protocol::Network::ResourceTiming> BuildObjectForTiming( static std::unique_ptr<protocol::Network::ResourceTiming> BuildObjectForTiming(
...@@ -692,25 +672,21 @@ void InspectorNetworkAgent::Trace(blink::Visitor* visitor) { ...@@ -692,25 +672,21 @@ void InspectorNetworkAgent::Trace(blink::Visitor* visitor) {
} }
void InspectorNetworkAgent::ShouldBlockRequest(const KURL& url, bool* result) { void InspectorNetworkAgent::ShouldBlockRequest(const KURL& url, bool* result) {
protocol::DictionaryValue* blocked_urls = if (blocked_urls_.IsEmpty())
state_->getObject(NetworkAgentState::kBlockedURLs);
if (!blocked_urls)
return; return;
String url_string = url.GetString(); String url_string = url.GetString();
for (size_t i = 0; i < blocked_urls->size(); ++i) { for (const String& blocked : blocked_urls_.Keys()) {
auto entry = blocked_urls->at(i); if (Matches(url_string, blocked)) {
if (Matches(url_string, entry.first)) {
*result = true; *result = true;
return; return;
} }
} }
return;
} }
void InspectorNetworkAgent::ShouldBypassServiceWorker(bool* result) { void InspectorNetworkAgent::ShouldBypassServiceWorker(bool* result) {
*result = if (bypass_service_worker_.Get())
state_->booleanProperty(NetworkAgentState::kBypassServiceWorker, false); *result = true;
} }
void InspectorNetworkAgent::DidBlockRequest( void InspectorNetworkAgent::DidBlockRequest(
...@@ -793,7 +769,7 @@ void InspectorNetworkAgent::WillSendRequestInternal( ...@@ -793,7 +769,7 @@ void InspectorNetworkAgent::WillSendRequestInternal(
initiator_info); initiator_info);
std::unique_ptr<protocol::Network::Request> request_info( std::unique_ptr<protocol::Network::Request> request_info(
BuildObjectForResourceRequest(request, max_post_data_size_)); BuildObjectForResourceRequest(request, max_post_data_size_.Get()));
// |loader| is null while inspecting worker. // |loader| is null while inspecting worker.
// TODO(horo): Refactor MixedContentChecker and set mixed content type even if // TODO(horo): Refactor MixedContentChecker and set mixed content type even if
...@@ -848,15 +824,10 @@ void InspectorNetworkAgent::WillSendRequest( ...@@ -848,15 +824,10 @@ void InspectorNetworkAgent::WillSendRequest(
loader->GetSubstituteData().IsValid()) loader->GetSubstituteData().IsValid())
return; return;
protocol::DictionaryValue* headers = if (!extra_request_headers_.IsEmpty()) {
state_->getObject(NetworkAgentState::kExtraRequestHeaders); for (const WTF::String& key : extra_request_headers_.Keys()) {
if (headers) { const WTF::String& value = extra_request_headers_.Get(key);
for (size_t i = 0; i < headers->size(); ++i) { AtomicString header_name = AtomicString(key);
auto header = headers->at(i);
AtomicString header_name = AtomicString(header.first);
String value;
if (!header.second->asString(&value))
continue;
// When overriding referer, also override referrer policy // When overriding referer, also override referrer policy
// for this request to assure the request will be allowed. // for this request to assure the request will be allowed.
// TODO(domfarolino): Stop setting the HTTPReferrer header, and instead // TODO(domfarolino): Stop setting the HTTPReferrer header, and instead
...@@ -874,7 +845,7 @@ void InspectorNetworkAgent::WillSendRequest( ...@@ -874,7 +845,7 @@ void InspectorNetworkAgent::WillSendRequest(
request.SetDevToolsToken(devtools_token_); request.SetDevToolsToken(devtools_token_);
if (state_->booleanProperty(NetworkAgentState::kCacheDisabled, false)) { if (cache_disabled_.Get()) {
if (LoadsFromCacheOnly(request) && if (LoadsFromCacheOnly(request) &&
request.GetRequestContext() != WebURLRequest::kRequestContextInternal) { request.GetRequestContext() != WebURLRequest::kRequestContextInternal) {
request.SetCacheMode(mojom::FetchCacheMode::kUnspecifiedForceCacheMiss); request.SetCacheMode(mojom::FetchCacheMode::kUnspecifiedForceCacheMiss);
...@@ -883,7 +854,7 @@ void InspectorNetworkAgent::WillSendRequest( ...@@ -883,7 +854,7 @@ void InspectorNetworkAgent::WillSendRequest(
} }
request.SetShouldResetAppCache(true); request.SetShouldResetAppCache(true);
} }
if (state_->booleanProperty(NetworkAgentState::kBypassServiceWorker, false)) if (bypass_service_worker_.Get())
request.SetSkipServiceWorker(true); request.SetSkipServiceWorker(true);
InspectorPageAgent::ResourceType type = InspectorPageAgent::ResourceType type =
...@@ -1332,31 +1303,26 @@ void InspectorNetworkAgent::DidReceiveWebSocketFrameError( ...@@ -1332,31 +1303,26 @@ void InspectorNetworkAgent::DidReceiveWebSocketFrameError(
Response InspectorNetworkAgent::enable(Maybe<int> total_buffer_size, Response InspectorNetworkAgent::enable(Maybe<int> total_buffer_size,
Maybe<int> resource_buffer_size, Maybe<int> resource_buffer_size,
Maybe<int> max_post_data_size) { Maybe<int> max_post_data_size) {
Enable(total_buffer_size.fromMaybe(g_maximum_total_buffer_size), total_buffer_size_.Set(total_buffer_size.fromMaybe(kDefaultTotalBufferSize));
resource_buffer_size.fromMaybe(g_maximum_resource_buffer_size), resource_buffer_size_.Set(
max_post_data_size.fromMaybe(0)); resource_buffer_size.fromMaybe(kDefaultResourceBufferSize));
max_post_data_size_.Set(max_post_data_size.fromMaybe(0));
Enable();
return Response::OK(); return Response::OK();
} }
void InspectorNetworkAgent::Enable(int total_buffer_size, void InspectorNetworkAgent::Enable() {
int resource_buffer_size,
int max_post_data_size) {
if (!GetFrontend()) if (!GetFrontend())
return; return;
resources_data_->SetResourcesDataSizeLimits(total_buffer_size, enabled_.Set(true);
resource_buffer_size); resources_data_->SetResourcesDataSizeLimits(total_buffer_size_.Get(),
state_->setBoolean(NetworkAgentState::kNetworkAgentEnabled, true); resource_buffer_size_.Get());
state_->setInteger(NetworkAgentState::kTotalBufferSize, total_buffer_size);
state_->setInteger(NetworkAgentState::kResourceBufferSize,
resource_buffer_size);
state_->setInteger(NetworkAgentState::kMaxPostDataSize, max_post_data_size);
max_post_data_size_ = max_post_data_size;
instrumenting_agents_->addInspectorNetworkAgent(this); instrumenting_agents_->addInspectorNetworkAgent(this);
} }
Response InspectorNetworkAgent::disable() { Response InspectorNetworkAgent::disable() {
DCHECK(!pending_request_); DCHECK(!pending_request_);
state_->setBoolean(NetworkAgentState::kNetworkAgentEnabled, false); enabled_.Set(false);
instrumenting_agents_->removeInspectorNetworkAgent(this); instrumenting_agents_->removeInspectorNetworkAgent(this);
resources_data_->Clear(); resources_data_->Clear();
return Response::OK(); return Response::OK();
...@@ -1364,8 +1330,14 @@ Response InspectorNetworkAgent::disable() { ...@@ -1364,8 +1330,14 @@ Response InspectorNetworkAgent::disable() {
Response InspectorNetworkAgent::setExtraHTTPHeaders( Response InspectorNetworkAgent::setExtraHTTPHeaders(
std::unique_ptr<protocol::Network::Headers> headers) { std::unique_ptr<protocol::Network::Headers> headers) {
state_->setObject(NetworkAgentState::kExtraRequestHeaders, extra_request_headers_.ClearAll();
headers->toValue()); std::unique_ptr<protocol::DictionaryValue> in = headers->toValue();
for (size_t i = 0; i < in->size(); ++i) {
const auto& entry = in->at(i);
String value;
if (entry.second && entry.second->asString(&value))
extra_request_headers_.Set(entry.first, value);
}
return Response::OK(); return Response::OK();
} }
...@@ -1417,11 +1389,9 @@ void InspectorNetworkAgent::getResponseBody( ...@@ -1417,11 +1389,9 @@ void InspectorNetworkAgent::getResponseBody(
Response InspectorNetworkAgent::setBlockedURLs( Response InspectorNetworkAgent::setBlockedURLs(
std::unique_ptr<protocol::Array<String>> urls) { std::unique_ptr<protocol::Array<String>> urls) {
std::unique_ptr<protocol::DictionaryValue> new_list = blocked_urls_.ClearAll();
protocol::DictionaryValue::create();
for (size_t i = 0; i < urls->length(); i++) for (size_t i = 0; i < urls->length(); i++)
new_list->setBoolean(urls->get(i), true); blocked_urls_.Set(urls->get(i), true);
state_->setObject(NetworkAgentState::kBlockedURLs, std::move(new_list));
return Response::OK(); return Response::OK();
} }
...@@ -1499,14 +1469,14 @@ Response InspectorNetworkAgent::setCacheDisabled(bool cache_disabled) { ...@@ -1499,14 +1469,14 @@ Response InspectorNetworkAgent::setCacheDisabled(bool cache_disabled) {
// TODO(ananta) // TODO(ananta)
// We should extract network cache state into a global entity which can be // We should extract network cache state into a global entity which can be
// queried from FrameLoader and other places. // queried from FrameLoader and other places.
state_->setBoolean(NetworkAgentState::kCacheDisabled, cache_disabled); cache_disabled_.Set(cache_disabled);
if (cache_disabled && IsMainThread()) if (cache_disabled && IsMainThread())
GetMemoryCache()->EvictResources(); GetMemoryCache()->EvictResources();
return Response::OK(); return Response::OK();
} }
Response InspectorNetworkAgent::setBypassServiceWorker(bool bypass) { Response InspectorNetworkAgent::setBypassServiceWorker(bool bypass) {
state_->setBoolean(NetworkAgentState::kBypassServiceWorker, bypass); bypass_service_worker_.Set(bypass);
return Response::OK(); return Response::OK();
} }
...@@ -1541,7 +1511,7 @@ void InspectorNetworkAgent::DidCommitLoad(LocalFrame* frame, ...@@ -1541,7 +1511,7 @@ void InspectorNetworkAgent::DidCommitLoad(LocalFrame* frame,
if (loader->GetFrame() != inspected_frames_->Root()) if (loader->GetFrame() != inspected_frames_->Root())
return; return;
if (state_->booleanProperty(NetworkAgentState::kCacheDisabled, false)) if (cache_disabled_.Get())
GetMemoryCache()->EvictResources(); GetMemoryCache()->EvictResources();
resources_data_->Clear(IdentifiersFactory::LoaderId(loader)); resources_data_->Clear(IdentifiersFactory::LoaderId(loader));
...@@ -1671,7 +1641,7 @@ bool InspectorNetworkAgent::FetchResourceContent(Document* document, ...@@ -1671,7 +1641,7 @@ bool InspectorNetworkAgent::FetchResourceContent(Document* document,
} }
String InspectorNetworkAgent::NavigationInitiatorInfo(LocalFrame* frame) { String InspectorNetworkAgent::NavigationInitiatorInfo(LocalFrame* frame) {
if (!state_->booleanProperty(NetworkAgentState::kNetworkAgentEnabled, false)) if (!enabled_.Get())
return String(); return String();
FrameNavigationInitiatorMap::iterator it = FrameNavigationInitiatorMap::iterator it =
frame_navigation_initiator_map_.find(IdentifiersFactory::FrameId(frame)); frame_navigation_initiator_map_.find(IdentifiersFactory::FrameId(frame));
...@@ -1692,9 +1662,8 @@ InspectorNetworkAgent::InspectorNetworkAgent( ...@@ -1692,9 +1662,8 @@ InspectorNetworkAgent::InspectorNetworkAgent(
: inspected_frames_(inspected_frames), : inspected_frames_(inspected_frames),
worker_global_scope_(worker_global_scope), worker_global_scope_(worker_global_scope),
v8_session_(v8_session), v8_session_(v8_session),
resources_data_( resources_data_(NetworkResourcesData::Create(kDefaultTotalBufferSize,
NetworkResourcesData::Create(g_maximum_total_buffer_size, kDefaultResourceBufferSize)),
g_maximum_resource_buffer_size)),
devtools_token_(worker_global_scope_ devtools_token_(worker_global_scope_
? worker_global_scope_->GetParentDevToolsToken() ? worker_global_scope_->GetParentDevToolsToken()
: inspected_frames->Root()->GetDevToolsFrameToken()), : inspected_frames->Root()->GetDevToolsFrameToken()),
...@@ -1706,13 +1675,22 @@ InspectorNetworkAgent::InspectorNetworkAgent( ...@@ -1706,13 +1675,22 @@ InspectorNetworkAgent::InspectorNetworkAgent(
TaskType::kInternalLoading), TaskType::kInternalLoading),
this, this,
&InspectorNetworkAgent::RemoveFinishedReplayXHRFired), &InspectorNetworkAgent::RemoveFinishedReplayXHRFired),
max_post_data_size_(0) { enabled_(&agent_state_, /*default_value=*/false),
cache_disabled_(&agent_state_, /*default_value=*/false),
bypass_service_worker_(&agent_state_, /*default_value=*/false),
blocked_urls_(&agent_state_, /*default_value=*/false),
extra_request_headers_(&agent_state_, /*default_value=*/WTF::String()),
total_buffer_size_(&agent_state_,
/*default_value=*/kDefaultTotalBufferSize),
resource_buffer_size_(&agent_state_,
/*default_value=*/kDefaultResourceBufferSize),
max_post_data_size_(&agent_state_, /*default_value=*/0) {
DCHECK((IsMainThread() && !worker_global_scope_) || DCHECK((IsMainThread() && !worker_global_scope_) ||
(!IsMainThread() && worker_global_scope_)); (!IsMainThread() && worker_global_scope_));
} }
void InspectorNetworkAgent::ShouldForceCORSPreflight(bool* result) { void InspectorNetworkAgent::ShouldForceCORSPreflight(bool* result) {
if (state_->booleanProperty(NetworkAgentState::kCacheDisabled, false)) if (cache_disabled_.Get())
*result = true; *result = true;
} }
......
...@@ -234,9 +234,7 @@ class CORE_EXPORT InspectorNetworkAgent final ...@@ -234,9 +234,7 @@ class CORE_EXPORT InspectorNetworkAgent final
String NavigationInitiatorInfo(LocalFrame*); String NavigationInitiatorInfo(LocalFrame*);
private: private:
void Enable(int total_buffer_size, void Enable();
int resource_buffer_size,
int max_post_data_size);
void WillSendRequestInternal(ExecutionContext*, void WillSendRequestInternal(ExecutionContext*,
unsigned long identifier, unsigned long identifier,
DocumentLoader*, DocumentLoader*,
...@@ -286,7 +284,14 @@ class CORE_EXPORT InspectorNetworkAgent final ...@@ -286,7 +284,14 @@ class CORE_EXPORT InspectorNetworkAgent final
HeapHashSet<Member<XMLHttpRequest>> replay_xhrs_; HeapHashSet<Member<XMLHttpRequest>> replay_xhrs_;
HeapHashSet<Member<XMLHttpRequest>> replay_xhrs_to_be_deleted_; HeapHashSet<Member<XMLHttpRequest>> replay_xhrs_to_be_deleted_;
TaskRunnerTimer<InspectorNetworkAgent> remove_finished_replay_xhr_timer_; TaskRunnerTimer<InspectorNetworkAgent> remove_finished_replay_xhr_timer_;
int max_post_data_size_; InspectorAgentState::Boolean enabled_;
InspectorAgentState::Boolean cache_disabled_;
InspectorAgentState::Boolean bypass_service_worker_;
InspectorAgentState::BooleanMap blocked_urls_;
InspectorAgentState::StringMap extra_request_headers_;
InspectorAgentState::Integer total_buffer_size_;
InspectorAgentState::Integer resource_buffer_size_;
InspectorAgentState::Integer max_post_data_size_;
}; };
} // namespace blink } // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment