| // Copyright 2018 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 CONTENT_COMMON_MIME_SNIFFING_THROTTLE_H_ |
| #define CONTENT_COMMON_MIME_SNIFFING_THROTTLE_H_ |
| |
| #include "base/memory/weak_ptr.h" |
| #include "content/common/content_export.h" |
| #include "third_party/blink/public/common/loader/url_loader_throttle.h" |
| |
| namespace content { |
| |
| // Throttle for mime type sniffing. This may intercept the request and |
| // modify the response's mime type in the response head. |
| class CONTENT_EXPORT MimeSniffingThrottle : public blink::URLLoaderThrottle { |
| public: |
| // |task_runner| is used to bind the right task runner for handling incoming |
| // IPC in MimeSniffingLoader. |task_runner| is supposed to be bound to the |
| // current sequence. |
| explicit MimeSniffingThrottle( |
| scoped_refptr<base::SingleThreadTaskRunner> task_runner); |
| ~MimeSniffingThrottle() override; |
| |
| // Implements blink::URLLoaderThrottle. |
| void WillProcessResponse(const GURL& response_url, |
| network::ResourceResponseHead* response_head, |
| bool* defer) override; |
| |
| // Called from MimeSniffingURLLoader once mime type is ready. |
| void ResumeWithNewResponseHead( |
| const network::ResourceResponseHead& new_response_head); |
| |
| private: |
| scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| base::WeakPtrFactory<MimeSniffingThrottle> weak_factory_{this}; |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_COMMON_MIME_SNIFFING_THROTTLE_H_ |