diff options
Diffstat (limited to 'content/browser/loader/stream_resource_handler.cc')
-rw-r--r-- | content/browser/loader/stream_resource_handler.cc | 57 |
1 files changed, 10 insertions, 47 deletions
diff --git a/content/browser/loader/stream_resource_handler.cc b/content/browser/loader/stream_resource_handler.cc index 0a2d6e8..08827e1 100644 --- a/content/browser/loader/stream_resource_handler.cc +++ b/content/browser/loader/stream_resource_handler.cc @@ -4,31 +4,23 @@ #include "content/browser/loader/stream_resource_handler.h" -#include "base/guid.h" #include "base/logging.h" -#include "content/browser/streams/stream.h" -#include "content/browser/streams/stream_registry.h" -#include "content/public/browser/resource_controller.h" -#include "net/base/io_buffer.h" -#include "net/url_request/url_request_status.h" -#include "url/url_constants.h" namespace content { StreamResourceHandler::StreamResourceHandler(net::URLRequest* request, StreamRegistry* registry, const GURL& origin) - : ResourceHandler(request), - read_buffer_(NULL) { - // TODO(tyoshino): Find a way to share this with the blob URL creation in - // WebKit. - GURL url(std::string(url::kBlobScheme) + ":" + origin.spec() + - base::GenerateGUID()); - stream_ = new Stream(registry, this, url); + : ResourceHandler(request) { + writer_.InitializeStream(registry, origin); } StreamResourceHandler::~StreamResourceHandler() { - stream_->RemoveWriteObserver(this); +} + +void StreamResourceHandler::SetController(ResourceController* controller) { + writer_.set_controller(controller); + ResourceHandler::SetController(controller); } bool StreamResourceHandler::OnUploadProgress(uint64 position, @@ -59,33 +51,12 @@ bool StreamResourceHandler::OnBeforeNetworkStart(const GURL& url, bool* defer) { bool StreamResourceHandler::OnWillRead(scoped_refptr<net::IOBuffer>* buf, int* buf_size, int min_size) { - static const int kReadBufSize = 32768; - - DCHECK(buf && buf_size); - if (!read_buffer_.get()) - read_buffer_ = new net::IOBuffer(kReadBufSize); - *buf = read_buffer_.get(); - *buf_size = kReadBufSize; - + writer_.OnWillRead(buf, buf_size, min_size); return true; } bool StreamResourceHandler::OnReadCompleted(int bytes_read, bool* defer) { - if (!bytes_read) - return true; - - // We have more data to read. - DCHECK(read_buffer_.get()); - - // Release the ownership of the buffer, and store a reference - // to it. A new one will be allocated in OnWillRead(). - scoped_refptr<net::IOBuffer> buffer; - read_buffer_.swap(buffer); - stream_->AddData(buffer, bytes_read); - - if (!stream_->can_add_data()) - *defer = true; - + writer_.OnReadCompleted(bytes_read, defer); return true; } @@ -93,19 +64,11 @@ void StreamResourceHandler::OnResponseCompleted( const net::URLRequestStatus& status, const std::string& sec_info, bool* defer) { - stream_->Finalize(); + writer_.Finalize(); } void StreamResourceHandler::OnDataDownloaded(int bytes_downloaded) { NOTREACHED(); } -void StreamResourceHandler::OnSpaceAvailable(Stream* stream) { - controller()->Resume(); -} - -void StreamResourceHandler::OnClose(Stream* stream) { - controller()->Cancel(); -} - } // namespace content |