123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // 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 COMPONENTS_URL_REWRITE_COMMON_URL_LOADER_THROTTLE_H_
- #define COMPONENTS_URL_REWRITE_COMMON_URL_LOADER_THROTTLE_H_
- #include "components/url_rewrite/common/url_request_rewrite_rules.h"
- #include "third_party/blink/public/common/loader/url_loader_throttle.h"
- namespace network {
- struct ResourceRequest;
- }
- namespace url_rewrite {
- // Implements a URLLoaderThrottle that applies network request rewrites provided
- // through the |UrlRequestRewriteRules| rules.
- class URLLoaderThrottle : public blink::URLLoaderThrottle {
- public:
- // A callback that checks if provided header is CORS exempt. The
- // implementation must be case-insensitive.
- using IsHeaderCorsExemptCallback =
- base::RepeatingCallback<bool(base::StringPiece)>;
- URLLoaderThrottle(scoped_refptr<UrlRequestRewriteRules> rules,
- IsHeaderCorsExemptCallback is_header_cors_exempt_callback);
- ~URLLoaderThrottle() override;
- URLLoaderThrottle(const URLLoaderThrottle&) = delete;
- URLLoaderThrottle& operator=(const URLLoaderThrottle&) = delete;
- // blink::URLLoaderThrottle implementation.
- void DetachFromCurrentSequence() override;
- void WillStartRequest(network::ResourceRequest* request,
- bool* defer) override;
- bool makes_unsafe_redirect() override;
- private:
- // Applies transformations specified by |rule| to |request|, conditional on
- // the matching criteria of |rule|.
- void ApplyRule(network::ResourceRequest* request,
- const mojom::UrlRequestRulePtr& rule);
- // Applies |rewrite| transformations to |request|.
- void ApplyRewrite(network::ResourceRequest* request,
- const mojom::UrlRequestActionPtr& rewrite);
- // Adds HTTP headers from |add_headers| to |request|.
- void ApplyAddHeaders(
- network::ResourceRequest* request,
- const mojom::UrlRequestRewriteAddHeadersPtr& add_headers);
- scoped_refptr<UrlRequestRewriteRules> rules_;
- IsHeaderCorsExemptCallback is_header_cors_exempt_callback_;
- };
- } // namespace url_rewrite
- #endif // COMPONENTS_URL_REWRITE_COMMON_URL_LOADER_THROTTLE_H_
|