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

Side by Side Diff: webkit/blob/local_file_stream_reader.cc

Issue 10447083: Rename webkit_blob::FileReader to FileStreamReader. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge master branch. Created 8 years, 6 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #include "webkit/blob/local_file_reader.h" 5 #include "webkit/blob/local_file_stream_reader.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/file_util_proxy.h" 8 #include "base/file_util_proxy.h"
9 #include "base/location.h" 9 #include "base/location.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
11 #include "base/platform_file.h" 11 #include "base/platform_file.h"
12 #include "base/task_runner.h" 12 #include "base/task_runner.h"
13 #include "net/base/file_stream.h" 13 #include "net/base/file_stream.h"
14 #include "net/base/io_buffer.h" 14 #include "net/base/io_buffer.h"
15 #include "net/base/net_errors.h" 15 #include "net/base/net_errors.h"
(...skipping 10 matching lines...) Expand all
26 bool VerifySnapshotTime(const base::Time& expected_modification_time, 26 bool VerifySnapshotTime(const base::Time& expected_modification_time,
27 const base::PlatformFileInfo& file_info) { 27 const base::PlatformFileInfo& file_info) {
28 return expected_modification_time.is_null() || 28 return expected_modification_time.is_null() ||
29 expected_modification_time.ToTimeT() == 29 expected_modification_time.ToTimeT() ==
30 file_info.last_modified.ToTimeT(); 30 file_info.last_modified.ToTimeT();
31 } 31 }
32 32
33 } // namespace 33 } // namespace
34 34
35 // static 35 // static
36 int LocalFileReader::PlatformFileErrorToNetError( 36 int LocalFileStreamReader::PlatformFileErrorToNetError(
37 base::PlatformFileError file_error) { 37 base::PlatformFileError file_error) {
38 switch (file_error) { 38 switch (file_error) {
39 case base::PLATFORM_FILE_OK: 39 case base::PLATFORM_FILE_OK:
40 return net::OK; 40 return net::OK;
41 case base::PLATFORM_FILE_ERROR_NOT_FOUND: 41 case base::PLATFORM_FILE_ERROR_NOT_FOUND:
42 return net::ERR_FILE_NOT_FOUND; 42 return net::ERR_FILE_NOT_FOUND;
43 case base::PLATFORM_FILE_ERROR_ACCESS_DENIED: 43 case base::PLATFORM_FILE_ERROR_ACCESS_DENIED:
44 return net::ERR_ACCESS_DENIED; 44 return net::ERR_ACCESS_DENIED;
45 default: 45 default:
46 return net::ERR_FAILED; 46 return net::ERR_FAILED;
47 } 47 }
48 } 48 }
49 49
50 LocalFileReader::LocalFileReader( 50 LocalFileStreamReader::LocalFileStreamReader(
51 base::TaskRunner* task_runner, 51 base::TaskRunner* task_runner,
52 const FilePath& file_path, 52 const FilePath& file_path,
53 int64 initial_offset, 53 int64 initial_offset,
54 const base::Time& expected_modification_time) 54 const base::Time& expected_modification_time)
55 : task_runner_(task_runner), 55 : task_runner_(task_runner),
56 file_path_(file_path), 56 file_path_(file_path),
57 initial_offset_(initial_offset), 57 initial_offset_(initial_offset),
58 expected_modification_time_(expected_modification_time), 58 expected_modification_time_(expected_modification_time),
59 has_pending_open_(false), 59 has_pending_open_(false),
60 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {} 60 weak_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {}
61 61
62 LocalFileReader::~LocalFileReader() { 62 LocalFileStreamReader::~LocalFileStreamReader() {
63 } 63 }
64 64
65 int LocalFileReader::Read(net::IOBuffer* buf, int buf_len, 65 int LocalFileStreamReader::Read(net::IOBuffer* buf, int buf_len,
66 const net::CompletionCallback& callback) { 66 const net::CompletionCallback& callback) {
67 DCHECK(!has_pending_open_); 67 DCHECK(!has_pending_open_);
68 if (stream_impl_.get()) 68 if (stream_impl_.get())
69 return stream_impl_->Read(buf, buf_len, callback); 69 return stream_impl_->Read(buf, buf_len, callback);
70 return Open(base::Bind(&LocalFileReader::DidOpenForRead, 70 return Open(base::Bind(&LocalFileStreamReader::DidOpenForRead,
71 weak_factory_.GetWeakPtr(), 71 weak_factory_.GetWeakPtr(),
72 make_scoped_refptr(buf), buf_len, callback)); 72 make_scoped_refptr(buf), buf_len, callback));
73 } 73 }
74 74
75 int LocalFileReader::GetLength(const net::Int64CompletionCallback& callback) { 75 int LocalFileStreamReader::GetLength(
76 const net::Int64CompletionCallback& callback) {
76 const bool posted = base::FileUtilProxy::GetFileInfo( 77 const bool posted = base::FileUtilProxy::GetFileInfo(
77 task_runner_, file_path_, 78 task_runner_, file_path_,
78 base::Bind(&LocalFileReader::DidGetFileInfoForGetLength, 79 base::Bind(&LocalFileStreamReader::DidGetFileInfoForGetLength,
79 weak_factory_.GetWeakPtr(), callback)); 80 weak_factory_.GetWeakPtr(), callback));
80 DCHECK(posted); 81 DCHECK(posted);
81 return net::ERR_IO_PENDING; 82 return net::ERR_IO_PENDING;
82 } 83 }
83 84
84 int LocalFileReader::Open(const net::CompletionCallback& callback) { 85 int LocalFileStreamReader::Open(const net::CompletionCallback& callback) {
85 DCHECK(!has_pending_open_); 86 DCHECK(!has_pending_open_);
86 DCHECK(!stream_impl_.get()); 87 DCHECK(!stream_impl_.get());
87 has_pending_open_ = true; 88 has_pending_open_ = true;
88 89
89 // Call GetLength first to make it perform last-modified-time verification, 90 // Call GetLength first to make it perform last-modified-time verification,
90 // and then call DidVerifyForOpen for do the rest. 91 // and then call DidVerifyForOpen for do the rest.
91 return GetLength(base::Bind(&LocalFileReader::DidVerifyForOpen, 92 return GetLength(base::Bind(&LocalFileStreamReader::DidVerifyForOpen,
92 weak_factory_.GetWeakPtr(), callback)); 93 weak_factory_.GetWeakPtr(), callback));
93 } 94 }
94 95
95 void LocalFileReader::DidVerifyForOpen( 96 void LocalFileStreamReader::DidVerifyForOpen(
96 const net::CompletionCallback& callback, 97 const net::CompletionCallback& callback,
97 int64 get_length_result) { 98 int64 get_length_result) {
98 if (get_length_result < 0) { 99 if (get_length_result < 0) {
99 callback.Run(static_cast<int>(get_length_result)); 100 callback.Run(static_cast<int>(get_length_result));
100 return; 101 return;
101 } 102 }
102 103
103 stream_impl_.reset(new net::FileStream(NULL)); 104 stream_impl_.reset(new net::FileStream(NULL));
104 const int result = stream_impl_->Open( 105 const int result = stream_impl_->Open(
105 file_path_, kOpenFlagsForRead, 106 file_path_, kOpenFlagsForRead,
106 base::Bind(&LocalFileReader::DidOpenFileStream, 107 base::Bind(&LocalFileStreamReader::DidOpenFileStream,
107 weak_factory_.GetWeakPtr(), 108 weak_factory_.GetWeakPtr(),
108 callback)); 109 callback));
109 if (result != net::ERR_IO_PENDING) 110 if (result != net::ERR_IO_PENDING)
110 callback.Run(result); 111 callback.Run(result);
111 } 112 }
112 113
113 void LocalFileReader::DidOpenFileStream( 114 void LocalFileStreamReader::DidOpenFileStream(
114 const net::CompletionCallback& callback, 115 const net::CompletionCallback& callback,
115 int result) { 116 int result) {
116 if (result != net::OK) { 117 if (result != net::OK) {
117 callback.Run(result); 118 callback.Run(result);
118 return; 119 return;
119 } 120 }
120 result = stream_impl_->Seek(net::FROM_BEGIN, initial_offset_, 121 result = stream_impl_->Seek(
121 base::Bind(&LocalFileReader::DidSeekFileStream, 122 net::FROM_BEGIN, initial_offset_,
122 weak_factory_.GetWeakPtr(), 123 base::Bind(&LocalFileStreamReader::DidSeekFileStream,
123 callback)); 124 weak_factory_.GetWeakPtr(),
125 callback));
124 if (result != net::ERR_IO_PENDING) { 126 if (result != net::ERR_IO_PENDING) {
125 callback.Run(result); 127 callback.Run(result);
126 } 128 }
127 } 129 }
128 130
129 void LocalFileReader::DidSeekFileStream( 131 void LocalFileStreamReader::DidSeekFileStream(
130 const net::CompletionCallback& callback, 132 const net::CompletionCallback& callback,
131 int64 seek_result) { 133 int64 seek_result) {
132 if (seek_result < 0) { 134 if (seek_result < 0) {
133 callback.Run(static_cast<int>(seek_result)); 135 callback.Run(static_cast<int>(seek_result));
134 return; 136 return;
135 } 137 }
136 if (seek_result != initial_offset_) { 138 if (seek_result != initial_offset_) {
137 callback.Run(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE); 139 callback.Run(net::ERR_REQUEST_RANGE_NOT_SATISFIABLE);
138 return; 140 return;
139 } 141 }
140 callback.Run(net::OK); 142 callback.Run(net::OK);
141 } 143 }
142 144
143 void LocalFileReader::DidOpenForRead(net::IOBuffer* buf, 145 void LocalFileStreamReader::DidOpenForRead(
144 int buf_len, 146 net::IOBuffer* buf,
145 const net::CompletionCallback& callback, 147 int buf_len,
146 int open_result) { 148 const net::CompletionCallback& callback,
149 int open_result) {
147 DCHECK(has_pending_open_); 150 DCHECK(has_pending_open_);
148 has_pending_open_ = false; 151 has_pending_open_ = false;
149 if (open_result != net::OK) { 152 if (open_result != net::OK) {
150 stream_impl_.reset(); 153 stream_impl_.reset();
151 callback.Run(open_result); 154 callback.Run(open_result);
152 return; 155 return;
153 } 156 }
154 DCHECK(stream_impl_.get()); 157 DCHECK(stream_impl_.get());
155 const int read_result = stream_impl_->Read(buf, buf_len, callback); 158 const int read_result = stream_impl_->Read(buf, buf_len, callback);
156 if (read_result != net::ERR_IO_PENDING) 159 if (read_result != net::ERR_IO_PENDING)
157 callback.Run(read_result); 160 callback.Run(read_result);
158 } 161 }
159 162
160 void LocalFileReader::DidGetFileInfoForGetLength( 163 void LocalFileStreamReader::DidGetFileInfoForGetLength(
161 const net::Int64CompletionCallback& callback, 164 const net::Int64CompletionCallback& callback,
162 base::PlatformFileError error, 165 base::PlatformFileError error,
163 const base::PlatformFileInfo& file_info) { 166 const base::PlatformFileInfo& file_info) {
164 if (file_info.is_directory) { 167 if (file_info.is_directory) {
165 callback.Run(net::ERR_FILE_NOT_FOUND); 168 callback.Run(net::ERR_FILE_NOT_FOUND);
166 return; 169 return;
167 } 170 }
168 if (error != base::PLATFORM_FILE_OK) { 171 if (error != base::PLATFORM_FILE_OK) {
169 callback.Run(LocalFileReader::PlatformFileErrorToNetError(error)); 172 callback.Run(LocalFileStreamReader::PlatformFileErrorToNetError(error));
170 return; 173 return;
171 } 174 }
172 if (!VerifySnapshotTime(expected_modification_time_, file_info)) { 175 if (!VerifySnapshotTime(expected_modification_time_, file_info)) {
173 callback.Run(net::ERR_UPLOAD_FILE_CHANGED); 176 callback.Run(net::ERR_UPLOAD_FILE_CHANGED);
174 return; 177 return;
175 } 178 }
176 callback.Run(file_info.size); 179 callback.Run(file_info.size);
177 } 180 }
178 181
179 } // namespace webkit_blob 182 } // namespace webkit_blob
OLDNEW
« no previous file with comments | « webkit/blob/local_file_stream_reader.h ('k') | webkit/blob/local_file_stream_reader_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698