Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2353)

Unified Diff: content/browser/loader/intercepting_resource_handler.h

Issue 2526983002: Refactor ResourceHandler API. (Closed)
Patch Set: Fix stuff Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698