| Index: content/browser/loader/intercepting_resource_handler.h
|
| diff --git a/content/browser/loader/intercepting_resource_handler.h b/content/browser/loader/intercepting_resource_handler.h
|
| index 3c796a406f67d2eb44609979529ba7c5a382470d..71ba6b6da675d6e907763f8348bbc1a1b56e95f5 100644
|
| --- a/content/browser/loader/intercepting_resource_handler.h
|
| +++ b/content/browser/loader/intercepting_resource_handler.h
|
| @@ -14,7 +14,6 @@
|
| #include "content/browser/loader/layered_resource_handler.h"
|
| #include "content/browser/loader/resource_handler.h"
|
| #include "content/common/content_export.h"
|
| -#include "content/public/browser/resource_controller.h"
|
| #include "net/base/io_buffer.h"
|
| #include "net/url_request/url_request_status.h"
|
|
|
| @@ -24,6 +23,8 @@ class URLRequest;
|
|
|
| namespace content {
|
|
|
| +class ResourceController;
|
| +
|
| // ResourceHandler that initiates special handling of the response if needed,
|
| // based on the response's MIME type (starts downloads, sends data to some
|
| // plugin types via a special channel).
|
| @@ -33,28 +34,26 @@ namespace content {
|
| // - OnResponseStarted on |next_handler| never sets |*defer|.
|
| // - OnResponseCompleted on |next_handler| never sets |*defer|.
|
| class CONTENT_EXPORT InterceptingResourceHandler
|
| - : public LayeredResourceHandler,
|
| - public ResourceController {
|
| + : public LayeredResourceHandler {
|
| public:
|
| InterceptingResourceHandler(std::unique_ptr<ResourceHandler> next_handler,
|
| net::URLRequest* request);
|
| ~InterceptingResourceHandler() override;
|
|
|
| // ResourceHandler implementation:
|
| - void SetController(ResourceController* controller) override;
|
| - bool OnResponseStarted(ResourceResponse* response, bool* defer) override;
|
| + void OnResponseStarted(
|
| + ResourceResponse* response,
|
| + std::unique_ptr<ResourceController> controller) override;
|
| bool OnWillRead(scoped_refptr<net::IOBuffer>* buf,
|
| int* buf_size,
|
| int min_size) override;
|
| - bool OnReadCompleted(int bytes_read, bool* defer) override;
|
| - void OnResponseCompleted(const net::URLRequestStatus& status,
|
| - bool* defer) override;
|
| + void OnReadCompleted(int bytes_read,
|
| + std::unique_ptr<ResourceController> controller) override;
|
| + void OnResponseCompleted(
|
| + const net::URLRequestStatus& status,
|
| + std::unique_ptr<ResourceController> controller) override;
|
|
|
| - // ResourceController implementation:
|
| - void Cancel() override;
|
| - void CancelAndIgnore() override;
|
| - void CancelWithError(int error_code) override;
|
| - void Resume() override;
|
| + void ResumeInternal();
|
|
|
| // Replaces the next handler with |new_handler|, sending
|
| // |payload_for_old_handler| to the old handler. Must be called after
|
| @@ -70,6 +69,10 @@ class CONTENT_EXPORT InterceptingResourceHandler
|
| }
|
|
|
| private:
|
| + // ResourceController subclass that calls into the InterceptingResourceHandler
|
| + // on cancel/resume.
|
| + class Controller;
|
| +
|
| enum class State {
|
| // The InterceptingResourceHandler is waiting for the mime type of the
|
| // response to be identified, to check if the next handler should be
|
| @@ -108,15 +111,12 @@ class CONTENT_EXPORT InterceptingResourceHandler
|
| PASS_THROUGH,
|
| };
|
|
|
| - // Runs necessary operations depending on |state_|. Returns false when an
|
| - // error happens, and set |*defer| to true if the operation continues upon
|
| - // return.
|
| - bool DoLoop(bool* defer);
|
| + // Runs necessary operations depending on |state_|.
|
| + void DoLoop();
|
|
|
| - // The return value and |defer| has the same meaning as DoLoop.
|
| - bool SendPayloadToOldHandler(bool* defer);
|
| - bool SendFirstReadBufferToNewHandler(bool* defer);
|
| - bool SendOnResponseStartedToNewHandler(bool* defer);
|
| + void SendPayloadToOldHandler();
|
| + void SendFirstReadBufferToNewHandler();
|
| + void SendOnResponseStartedToNewHandler();
|
|
|
| State state_ = State::STARTING;
|
|
|
|
|