Commit 0c94f975 authored by Karan Bhatia's avatar Karan Bhatia Committed by Commit Bot

DNR: Move RequestParams to its own file.

Simply moves RequestParams to its own file. This is a pure
refactoring change.

BUG=974391

Change-Id: Id02ae3f33847617ea65ad2e5d757094015d22bd4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1881494
Commit-Queue: Karan Bhatia <karandeepb@chromium.org>
Auto-Submit: Karan Bhatia <karandeepb@chromium.org>
Reviewed-by: default avatarKelvin Jiang <kelvinjiang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#710129}
parent 7089a457
...@@ -22,6 +22,8 @@ source_set("declarative_net_request") { ...@@ -22,6 +22,8 @@ source_set("declarative_net_request") {
"parse_info.h", "parse_info.h",
"request_action.cc", "request_action.cc",
"request_action.h", "request_action.h",
"request_params.cc",
"request_params.h",
"rules_monitor_service.cc", "rules_monitor_service.cc",
"rules_monitor_service.h", "rules_monitor_service.h",
"ruleset_manager.cc", "ruleset_manager.cc",
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "extensions/browser/api/declarative_net_request/flat/extension_ruleset_generated.h" #include "extensions/browser/api/declarative_net_request/flat/extension_ruleset_generated.h"
#include "extensions/browser/api/declarative_net_request/request_action.h" #include "extensions/browser/api/declarative_net_request/request_action.h"
#include "extensions/browser/api/declarative_net_request/request_params.h"
#include "extensions/browser/api/declarative_net_request/utils.h" #include "extensions/browser/api/declarative_net_request/utils.h"
namespace extensions { namespace extensions {
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "components/version_info/version_info.h" #include "components/version_info/version_info.h"
#include "extensions/browser/api/declarative_net_request/constants.h" #include "extensions/browser/api/declarative_net_request/constants.h"
#include "extensions/browser/api/declarative_net_request/request_action.h" #include "extensions/browser/api/declarative_net_request/request_action.h"
#include "extensions/browser/api/declarative_net_request/request_params.h"
#include "extensions/browser/api/declarative_net_request/ruleset_matcher.h" #include "extensions/browser/api/declarative_net_request/ruleset_matcher.h"
#include "extensions/browser/api/declarative_net_request/ruleset_source.h" #include "extensions/browser/api/declarative_net_request/ruleset_source.h"
#include "extensions/browser/api/declarative_net_request/test_utils.h" #include "extensions/browser/api/declarative_net_request/test_utils.h"
......
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/browser/api/declarative_net_request/request_params.h"
#include "content/public/common/resource_type.h"
#include "extensions/browser/api/web_request/web_request_info.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "url/gurl.h"
namespace extensions {
namespace declarative_net_request {
namespace {
namespace flat_rule = url_pattern_index::flat;
// Maps content::ResourceType to flat_rule::ElementType.
flat_rule::ElementType GetElementType(content::ResourceType type) {
switch (type) {
case content::ResourceType::kPrefetch:
case content::ResourceType::kSubResource:
return flat_rule::ElementType_OTHER;
case content::ResourceType::kMainFrame:
case content::ResourceType::kNavigationPreloadMainFrame:
return flat_rule::ElementType_MAIN_FRAME;
case content::ResourceType::kCspReport:
return flat_rule::ElementType_CSP_REPORT;
case content::ResourceType::kScript:
case content::ResourceType::kWorker:
case content::ResourceType::kSharedWorker:
case content::ResourceType::kServiceWorker:
return flat_rule::ElementType_SCRIPT;
case content::ResourceType::kImage:
case content::ResourceType::kFavicon:
return flat_rule::ElementType_IMAGE;
case content::ResourceType::kStylesheet:
return flat_rule::ElementType_STYLESHEET;
case content::ResourceType::kObject:
case content::ResourceType::kPluginResource:
return flat_rule::ElementType_OBJECT;
case content::ResourceType::kXhr:
return flat_rule::ElementType_XMLHTTPREQUEST;
case content::ResourceType::kSubFrame:
case content::ResourceType::kNavigationPreloadSubFrame:
return flat_rule::ElementType_SUBDOCUMENT;
case content::ResourceType::kPing:
return flat_rule::ElementType_PING;
case content::ResourceType::kMedia:
return flat_rule::ElementType_MEDIA;
case content::ResourceType::kFontResource:
return flat_rule::ElementType_FONT;
}
NOTREACHED();
return flat_rule::ElementType_OTHER;
}
// Returns the flat_rule::ElementType for the given |request|.
flat_rule::ElementType GetElementType(const WebRequestInfo& request) {
if (request.url.SchemeIsWSOrWSS())
return flat_rule::ElementType_WEBSOCKET;
return GetElementType(request.type);
}
// Returns whether the request to |url| is third party to its |document_origin|.
// TODO(crbug.com/696822): Look into caching this.
bool IsThirdPartyRequest(const GURL& url, const url::Origin& document_origin) {
if (document_origin.opaque())
return true;
return !net::registry_controlled_domains::SameDomainOrHost(
url, document_origin,
net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
}
} // namespace
RequestParams::RequestParams(const WebRequestInfo& info)
: url(&info.url),
first_party_origin(info.initiator.value_or(url::Origin())),
element_type(GetElementType(info)) {
is_third_party = IsThirdPartyRequest(*url, first_party_origin);
}
RequestParams::RequestParams() = default;
RequestParams::~RequestParams() = default;
} // namespace declarative_net_request
} // namespace extensions
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_BROWSER_API_DECLARATIVE_NET_REQUEST_REQUEST_PARAMS_H_
#define EXTENSIONS_BROWSER_API_DECLARATIVE_NET_REQUEST_REQUEST_PARAMS_H_
#include "base/containers/flat_map.h"
#include "base/macros.h"
#include "components/url_pattern_index/url_pattern_index.h"
#include "url/origin.h"
class GURL;
namespace extensions {
struct WebRequestInfo;
namespace declarative_net_request {
class RulesetMatcher;
// Struct to hold parameters for a network request.
struct RequestParams {
// |info| must outlive this instance.
explicit RequestParams(const WebRequestInfo& info);
RequestParams();
~RequestParams();
// This is a pointer to a GURL. Hence the GURL must outlive this struct.
const GURL* url = nullptr;
url::Origin first_party_origin;
url_pattern_index::flat::ElementType element_type =
url_pattern_index::flat::ElementType_OTHER;
bool is_third_party = false;
// A map of RulesetMatchers to results of |HasMatchingAllowRule| for this
// request. Used as a cache to prevent extra calls to |HasMatchingAllowRule|.
mutable base::flat_map<const RulesetMatcher*, bool> allow_rule_cache;
DISALLOW_COPY_AND_ASSIGN(RequestParams);
};
} // namespace declarative_net_request
} // namespace extensions
#endif // EXTENSIONS_BROWSER_API_DECLARATIVE_NET_REQUEST_REQUEST_PARAMS_H_
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "extensions/browser/api/declarative_net_request/composite_matcher.h" #include "extensions/browser/api/declarative_net_request/composite_matcher.h"
#include "extensions/browser/api/declarative_net_request/constants.h" #include "extensions/browser/api/declarative_net_request/constants.h"
#include "extensions/browser/api/declarative_net_request/request_action.h" #include "extensions/browser/api/declarative_net_request/request_action.h"
#include "extensions/browser/api/declarative_net_request/request_params.h"
#include "extensions/browser/api/declarative_net_request/utils.h" #include "extensions/browser/api/declarative_net_request/utils.h"
#include "extensions/browser/api/extensions_api_client.h" #include "extensions/browser/api/extensions_api_client.h"
#include "extensions/browser/api/web_request/permission_helper.h" #include "extensions/browser/api/web_request/permission_helper.h"
......
...@@ -15,16 +15,16 @@ ...@@ -15,16 +15,16 @@
#include "base/metrics/histogram_macros.h" #include "base/metrics/histogram_macros.h"
#include "base/strings/strcat.h" #include "base/strings/strcat.h"
#include "base/timer/elapsed_timer.h" #include "base/timer/elapsed_timer.h"
#include "content/public/common/resource_type.h"
#include "extensions/browser/api/declarative_net_request/constants.h" #include "extensions/browser/api/declarative_net_request/constants.h"
#include "extensions/browser/api/declarative_net_request/request_action.h"
#include "extensions/browser/api/declarative_net_request/request_params.h"
#include "extensions/browser/api/declarative_net_request/ruleset_source.h" #include "extensions/browser/api/declarative_net_request/ruleset_source.h"
#include "extensions/browser/api/declarative_net_request/utils.h" #include "extensions/browser/api/declarative_net_request/utils.h"
#include "extensions/browser/api/web_request/web_request_info.h"
#include "extensions/common/api/declarative_net_request/constants.h" #include "extensions/common/api/declarative_net_request/constants.h"
#include "extensions/common/api/declarative_net_request/utils.h" #include "extensions/common/api/declarative_net_request/utils.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "net/base/url_util.h" #include "net/base/url_util.h"
#include "net/http/http_request_headers.h" #include "net/http/http_request_headers.h"
#include "url/gurl.h"
#include "url/url_constants.h" #include "url/url_constants.h"
namespace extensions { namespace extensions {
...@@ -39,65 +39,6 @@ constexpr const char kSetCookieResponseHeader[] = "set-cookie"; ...@@ -39,65 +39,6 @@ constexpr const char kSetCookieResponseHeader[] = "set-cookie";
using FindRuleStrategy = using FindRuleStrategy =
url_pattern_index::UrlPatternIndexMatcher::FindRuleStrategy; url_pattern_index::UrlPatternIndexMatcher::FindRuleStrategy;
// Maps content::ResourceType to flat_rule::ElementType.
flat_rule::ElementType GetElementType(content::ResourceType type) {
switch (type) {
case content::ResourceType::kPrefetch:
case content::ResourceType::kSubResource:
return flat_rule::ElementType_OTHER;
case content::ResourceType::kMainFrame:
case content::ResourceType::kNavigationPreloadMainFrame:
return flat_rule::ElementType_MAIN_FRAME;
case content::ResourceType::kCspReport:
return flat_rule::ElementType_CSP_REPORT;
case content::ResourceType::kScript:
case content::ResourceType::kWorker:
case content::ResourceType::kSharedWorker:
case content::ResourceType::kServiceWorker:
return flat_rule::ElementType_SCRIPT;
case content::ResourceType::kImage:
case content::ResourceType::kFavicon:
return flat_rule::ElementType_IMAGE;
case content::ResourceType::kStylesheet:
return flat_rule::ElementType_STYLESHEET;
case content::ResourceType::kObject:
case content::ResourceType::kPluginResource:
return flat_rule::ElementType_OBJECT;
case content::ResourceType::kXhr:
return flat_rule::ElementType_XMLHTTPREQUEST;
case content::ResourceType::kSubFrame:
case content::ResourceType::kNavigationPreloadSubFrame:
return flat_rule::ElementType_SUBDOCUMENT;
case content::ResourceType::kPing:
return flat_rule::ElementType_PING;
case content::ResourceType::kMedia:
return flat_rule::ElementType_MEDIA;
case content::ResourceType::kFontResource:
return flat_rule::ElementType_FONT;
}
NOTREACHED();
return flat_rule::ElementType_OTHER;
}
// Returns the flat_rule::ElementType for the given |request|.
flat_rule::ElementType GetElementType(const WebRequestInfo& request) {
if (request.url.SchemeIsWSOrWSS())
return flat_rule::ElementType_WEBSOCKET;
return GetElementType(request.type);
}
// Returns whether the request to |url| is third party to its |document_origin|.
// TODO(crbug.com/696822): Look into caching this.
bool IsThirdPartyRequest(const GURL& url, const url::Origin& document_origin) {
if (document_origin.opaque())
return true;
return !net::registry_controlled_domains::SameDomainOrHost(
url, document_origin,
net::registry_controlled_domains::INCLUDE_PRIVATE_REGISTRIES);
}
std::vector<url_pattern_index::UrlPatternIndexMatcher> GetMatchers( std::vector<url_pattern_index::UrlPatternIndexMatcher> GetMatchers(
const flat::ExtensionIndexedRuleset* root) { const flat::ExtensionIndexedRuleset* root) {
DCHECK(root); DCHECK(root);
...@@ -350,16 +291,6 @@ RequestAction GetRemoveHeadersActionForMask(const ExtensionId& extension_id, ...@@ -350,16 +291,6 @@ RequestAction GetRemoveHeadersActionForMask(const ExtensionId& extension_id,
} // namespace } // namespace
RequestParams::RequestParams(const WebRequestInfo& info)
: url(&info.url),
first_party_origin(info.initiator.value_or(url::Origin())),
element_type(GetElementType(info)) {
is_third_party = IsThirdPartyRequest(*url, first_party_origin);
}
RequestParams::RequestParams() = default;
RequestParams::~RequestParams() = default;
// static // static
RulesetMatcher::LoadRulesetResult RulesetMatcher::CreateVerifiedMatcher( RulesetMatcher::LoadRulesetResult RulesetMatcher::CreateVerifiedMatcher(
const RulesetSource& source, const RulesetSource& source,
......
...@@ -10,20 +10,19 @@ ...@@ -10,20 +10,19 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "base/containers/flat_map.h" #include "base/macros.h"
#include "base/optional.h" #include "base/optional.h"
#include "components/url_pattern_index/url_pattern_index.h" #include "components/url_pattern_index/url_pattern_index.h"
#include "extensions/browser/api/declarative_net_request/flat/extension_ruleset_generated.h" #include "extensions/browser/api/declarative_net_request/flat/extension_ruleset_generated.h"
#include "extensions/common/api/declarative_net_request.h" #include "extensions/common/api/declarative_net_request.h"
#include "extensions/common/extension_id.h" #include "extensions/common/extension_id.h"
#include "url/gurl.h"
#include "url/origin.h"
class GURL;
namespace extensions { namespace extensions {
struct WebRequestInfo;
namespace declarative_net_request { namespace declarative_net_request {
struct RequestAction; struct RequestAction;
struct RequestParams;
class RulesetSource; class RulesetSource;
namespace flat { namespace flat {
...@@ -31,29 +30,6 @@ struct ExtensionIndexedRuleset; ...@@ -31,29 +30,6 @@ struct ExtensionIndexedRuleset;
struct UrlRuleMetadata; struct UrlRuleMetadata;
} // namespace flat } // namespace flat
class RulesetMatcher;
// Struct to hold parameters for a network request.
struct RequestParams {
// |info| must outlive this instance.
explicit RequestParams(const WebRequestInfo& info);
RequestParams();
~RequestParams();
// This is a pointer to a GURL. Hence the GURL must outlive this struct.
const GURL* url = nullptr;
url::Origin first_party_origin;
url_pattern_index::flat::ElementType element_type =
url_pattern_index::flat::ElementType_OTHER;
bool is_third_party = false;
// A map of RulesetMatchers to results of |HasMatchingAllowRule| for this
// request. Used as a cache to prevent extra calls to |HasMatchingAllowRule|.
mutable base::flat_map<const RulesetMatcher*, bool> allow_rule_cache;
DISALLOW_COPY_AND_ASSIGN(RequestParams);
};
// RulesetMatcher encapsulates the Declarative Net Request API ruleset // RulesetMatcher encapsulates the Declarative Net Request API ruleset
// corresponding to a single RulesetSource. This uses the url_pattern_index // corresponding to a single RulesetSource. This uses the url_pattern_index
// component to achieve fast matching of network requests against declarative // component to achieve fast matching of network requests against declarative
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "components/version_info/version_info.h" #include "components/version_info/version_info.h"
#include "extensions/browser/api/declarative_net_request/constants.h" #include "extensions/browser/api/declarative_net_request/constants.h"
#include "extensions/browser/api/declarative_net_request/request_action.h" #include "extensions/browser/api/declarative_net_request/request_action.h"
#include "extensions/browser/api/declarative_net_request/request_params.h"
#include "extensions/browser/api/declarative_net_request/ruleset_source.h" #include "extensions/browser/api/declarative_net_request/ruleset_source.h"
#include "extensions/browser/api/declarative_net_request/test_utils.h" #include "extensions/browser/api/declarative_net_request/test_utils.h"
#include "extensions/browser/api/declarative_net_request/utils.h" #include "extensions/browser/api/declarative_net_request/utils.h"
......
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