summaryrefslogtreecommitdiff
path: root/chromium/content/browser/streams/stream.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/streams/stream.h')
-rw-r--r--chromium/content/browser/streams/stream.h24
1 files changed, 23 insertions, 1 deletions
diff --git a/chromium/content/browser/streams/stream.h b/chromium/content/browser/streams/stream.h
index 85edc884081..3937f5b9e38 100644
--- a/chromium/content/browser/streams/stream.h
+++ b/chromium/content/browser/streams/stream.h
@@ -36,6 +36,7 @@ class CONTENT_EXPORT Stream : public base::RefCountedThreadSafe<Stream> {
STREAM_HAS_DATA,
STREAM_COMPLETE,
STREAM_EMPTY,
+ STREAM_ABORTED,
};
// Creates a stream.
@@ -57,6 +58,10 @@ class CONTENT_EXPORT Stream : public base::RefCountedThreadSafe<Stream> {
// Removes the write observer. |observer| must be the current observer.
void RemoveWriteObserver(StreamWriteObserver* observer);
+ // Stops accepting new data, clears all buffer, unregisters this stream from
+ // |registry_| and make coming ReadRawData() calls return STREAM_ABORTED.
+ void Abort();
+
// Adds the data in |buffer| to the stream. Takes ownership of |buffer|.
void AddData(scoped_refptr<net::IOBuffer> buffer, size_t size);
// Adds data of |size| at |data| to the stream. This method creates a copy
@@ -81,6 +86,11 @@ class CONTENT_EXPORT Stream : public base::RefCountedThreadSafe<Stream> {
const GURL& url() const { return url_; }
+ // For StreamRegistry to remember the last memory usage reported to it.
+ size_t last_total_buffered_bytes() const {
+ return last_total_buffered_bytes_;
+ }
+
private:
friend class base::RefCountedThreadSafe<Stream>;
@@ -89,13 +99,25 @@ class CONTENT_EXPORT Stream : public base::RefCountedThreadSafe<Stream> {
void OnSpaceAvailable();
void OnDataAvailable();
- size_t data_bytes_read_;
+ // Clears |data_| and related variables.
+ void ClearBuffer();
+
bool can_add_data_;
GURL url_;
+ // Buffer for storing data read from |reader_| but not yet read out from this
+ // Stream by ReadRawData() method.
scoped_refptr<net::IOBuffer> data_;
+ // Number of bytes read from |reader_| into |data_| including bytes already
+ // read out.
size_t data_length_;
+ // Number of bytes in |data_| that are already read out.
+ size_t data_bytes_read_;
+
+ // Last value returned by writer_->TotalBufferedBytes() in AddData(). Stored
+ // in order to check memory usage.
+ size_t last_total_buffered_bytes_;
scoped_ptr<ByteStreamWriter> writer_;
scoped_ptr<ByteStreamReader> reader_;