| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_URL_REQUEST_JOB_H_ | 5 #ifndef CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_URL_REQUEST_JOB_H_ |
| 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_URL_REQUEST_JOB_H_ | 6 #define CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_URL_REQUEST_JOB_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/callback.h" | 11 #include "base/callback.h" |
| 12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "base/memory/scoped_vector.h" |
| 14 #include "base/memory/weak_ptr.h" | 15 #include "base/memory/weak_ptr.h" |
| 15 #include "base/string_piece.h" | 16 #include "base/string_piece.h" |
| 16 #include "chrome/browser/chromeos/drive/drive_file_error.h" | 17 #include "chrome/browser/chromeos/drive/drive_file_error.h" |
| 17 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h" | 18 #include "chrome/browser/chromeos/drive/drive_resource_metadata.h" |
| 18 #include "chrome/browser/google_apis/gdata_errorcode.h" | 19 #include "chrome/browser/google_apis/gdata_errorcode.h" |
| 19 #include "net/url_request/url_request_job.h" | 20 #include "net/url_request/url_request_job.h" |
| 20 | 21 |
| 21 namespace net { | 22 namespace net { |
| 22 class FileStream; | 23 class FileStream; |
| 23 class HttpResponseInfo; | 24 class HttpResponseInfo; |
| 24 class IOBuffer; | 25 class IOBuffer; |
| 25 class NetworkDelegate; | 26 class NetworkDelegate; |
| 26 class URLRequest; | 27 class URLRequest; |
| 27 } // namespace net | 28 } // namespace net |
| 28 | 29 |
| 29 namespace drive { | 30 namespace drive { |
| 30 | 31 |
| 31 class DriveEntryProto; | 32 class DriveEntryProto; |
| 32 class DriveFileSystemInterface; | 33 class DriveFileSystemInterface; |
| 33 | 34 |
| 34 // DriveURLRequesetJob is the gateway between network-level drive://... | 35 // DriveURLRequesetJob is the gateway between network-level drive://... |
| 35 // requests for drive resources and DriveFileSytem. It exposes content URLs | 36 // requests for drive resources and DriveFileSytem. It exposes content URLs |
| 36 // formatted as drive://<resource-id>. | 37 // formatted as drive://<resource-id>. |
| 37 // The methods should be run on IO thread. | 38 // The methods should be run on IO thread. |
| 39 // This class seems to have some timing issue and to handle edge cases somehow |
| 40 // wrongly. Also, probably because of the requirement change, the code path |
| 41 // is getting complicated. |
| 42 // TODO(hidehiko): Clean the code up and handles edge cases correctly. |
| 38 class DriveURLRequestJob : public net::URLRequestJob { | 43 class DriveURLRequestJob : public net::URLRequestJob { |
| 39 public: | 44 public: |
| 40 | 45 |
| 41 // Callback to return the DriveFileSystemInterface instance. This is an | 46 // Callback to return the DriveFileSystemInterface instance. This is an |
| 42 // injecting point for testing. | 47 // injecting point for testing. |
| 43 // Note that the callback will be copied between threads (IO and UI), and | 48 // Note that the callback will be copied between threads (IO and UI), and |
| 44 // will be called on UI thread. | 49 // will be called on UI thread. |
| 45 typedef base::Callback<DriveFileSystemInterface*()> DriveFileSystemGetter; | 50 typedef base::Callback<DriveFileSystemInterface*()> DriveFileSystemGetter; |
| 46 | 51 |
| 47 DriveURLRequestJob( | 52 DriveURLRequestJob( |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 124 base::FilePath local_file_path_; | 129 base::FilePath local_file_path_; |
| 125 base::FilePath drive_file_path_; | 130 base::FilePath drive_file_path_; |
| 126 std::string mime_type_; | 131 std::string mime_type_; |
| 127 int64 initial_file_size_; | 132 int64 initial_file_size_; |
| 128 int64 remaining_bytes_; | 133 int64 remaining_bytes_; |
| 129 scoped_ptr<net::FileStream> stream_; | 134 scoped_ptr<net::FileStream> stream_; |
| 130 scoped_ptr<net::HttpResponseInfo> response_info_; | 135 scoped_ptr<net::HttpResponseInfo> response_info_; |
| 131 bool streaming_download_; | 136 bool streaming_download_; |
| 132 scoped_refptr<net::IOBuffer> read_buf_; | 137 scoped_refptr<net::IOBuffer> read_buf_; |
| 133 base::StringPiece read_buf_remaining_; | 138 base::StringPiece read_buf_remaining_; |
| 134 std::string download_buf_; | 139 ScopedVector<std::string> pending_downloaded_data_; |
| 135 base::StringPiece download_buf_remaining_; | |
| 136 | 140 |
| 137 // This should remain the last member so it'll be destroyed first and | 141 // This should remain the last member so it'll be destroyed first and |
| 138 // invalidate its weak pointers before other members are destroyed. | 142 // invalidate its weak pointers before other members are destroyed. |
| 139 base::WeakPtrFactory<DriveURLRequestJob> weak_ptr_factory_; | 143 base::WeakPtrFactory<DriveURLRequestJob> weak_ptr_factory_; |
| 140 DISALLOW_COPY_AND_ASSIGN(DriveURLRequestJob); | 144 DISALLOW_COPY_AND_ASSIGN(DriveURLRequestJob); |
| 141 }; | 145 }; |
| 142 | 146 |
| 143 } // namespace drive | 147 } // namespace drive |
| 144 | 148 |
| 145 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_URL_REQUEST_JOB_H_ | 149 #endif // CHROME_BROWSER_CHROMEOS_DRIVE_DRIVE_URL_REQUEST_JOB_H_ |
| OLD | NEW |