| Index: webkit/blob/blob_url_request_job.h
|
| ===================================================================
|
| --- webkit/blob/blob_url_request_job.h (revision 0)
|
| +++ webkit/blob/blob_url_request_job.h (revision 0)
|
| @@ -0,0 +1,87 @@
|
| +// Copyright (c) 20010 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 WEBKIT_BLOB_BLOB_URL_REQUEST_JOB_H_
|
| +#define WEBKIT_BLOB_BLOB_URL_REQUEST_JOB_H_
|
| +
|
| +#include "base/ref_counted.h"
|
| +#include "base/scoped_callback_factory.h"
|
| +#include "base/scoped_ptr.h"
|
| +#include "net/base/completion_callback.h"
|
| +#include "net/base/file_stream.h"
|
| +#include "net/http/http_byte_range.h"
|
| +#include "net/url_request/url_request_job.h"
|
| +#include "webkit/blob/blob_data.h"
|
| +
|
| +namespace base {
|
| +class MessageLoopProxy;
|
| +}
|
| +
|
| +namespace file_util {
|
| +struct FileInfo;
|
| +}
|
| +
|
| +namespace webkit_blob {
|
| +
|
| +// A request job that handles reading blob URLs.
|
| +class BlobURLRequestJob : public URLRequestJob {
|
| + public:
|
| + BlobURLRequestJob(URLRequest* request,
|
| + BlobData* blob_data,
|
| + base::MessageLoopProxy* resolving_message_loop_proxy);
|
| + virtual ~BlobURLRequestJob();
|
| +
|
| + // URLRequestJob methods.
|
| + virtual void Start();
|
| + virtual void Kill();
|
| + virtual bool ReadRawData(net::IOBuffer* buf, int buf_size, int* bytes_read);
|
| + virtual bool GetMimeType(std::string* mime_type) const;
|
| + virtual void GetResponseInfo(net::HttpResponseInfo* info);
|
| + virtual int GetResponseCode() const;
|
| + virtual void SetExtraRequestHeaders(const net::HttpRequestHeaders& headers);
|
| +
|
| + private:
|
| + void ResolveFile(const FilePath& file_path);
|
| + void CountSize();
|
| + void Seek(int64 offset);
|
| + void AdvanceItem();
|
| + void AdvanceBytesRead(int result);
|
| + bool ReadLoop(int* bytes_read);
|
| + bool ReadItem();
|
| + bool ReadBytes(const BlobData::Item& item, int bytes_to_read);
|
| + bool ReadFile(const BlobData::Item& item, int bytes_to_read);
|
| + void HeadersCompleted(int status_code, const std::string& status_txt);
|
| + int ReadCompleted();
|
| + void NotifySuccess();
|
| + void NotifyFailure(int);
|
| +
|
| + void DidResolve(bool exists, const file_util::FileInfo& file_info);
|
| + void DidRead(int result);
|
| +
|
| + base::ScopedCallbackFactory<BlobURLRequestJob> callback_factory_;
|
| + scoped_refptr<BlobData> blob_data_;
|
| + scoped_refptr<base::MessageLoopProxy> file_thread_proxy_;
|
| + net::CompletionCallbackImpl<BlobURLRequestJob> io_callback_;
|
| + std::vector<int64> item_length_list_;
|
| + net::FileStream stream_;
|
| + size_t item_index_;
|
| + int64 total_size_;
|
| + int64 current_item_offset_;
|
| + int64 remaining_bytes_;
|
| + scoped_refptr<net::IOBuffer> read_buf_;
|
| + int read_buf_offset_;
|
| + int read_buf_size_;
|
| + int read_buf_remaining_bytes_;
|
| + bool error_;
|
| + bool headers_set_;
|
| + bool byte_range_set_;
|
| + net::HttpByteRange byte_range_;
|
| + scoped_ptr<net::HttpResponseInfo> response_info_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(BlobURLRequestJob);
|
| +};
|
| +
|
| +} // namespace webkit_blob
|
| +
|
| +#endif // WEBKIT_BLOB_BLOB_URL_REQUEST_JOB_H_
|
|
|
| Property changes on: webkit\blob\blob_url_request_job.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|