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

Side by Side Diff: storage/browser/blob/local_file_stream_reader.cc

Issue 442383002: Move storage-related files from webkit/ to new top-level directory storage/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 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/browser/blob/local_file_stream_reader.h" 5 #include "storage/browser/blob/local_file_stream_reader.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/files/file_util_proxy.h" 8 #include "base/files/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/task_runner.h" 11 #include "base/task_runner.h"
12 #include "net/base/file_stream.h" 12 #include "net/base/file_stream.h"
13 #include "net/base/io_buffer.h" 13 #include "net/base/io_buffer.h"
14 #include "net/base/net_errors.h" 14 #include "net/base/net_errors.h"
15 15
16 namespace webkit_blob { 16 namespace storage {
17 17
18 namespace { 18 namespace {
19 19
20 const int kOpenFlagsForRead = base::File::FLAG_OPEN | 20 const int kOpenFlagsForRead =
21 base::File::FLAG_READ | 21 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
22 base::File::FLAG_ASYNC;
23 22
24 } // namespace 23 } // namespace
25 24
26 FileStreamReader* FileStreamReader::CreateForLocalFile( 25 FileStreamReader* FileStreamReader::CreateForLocalFile(
27 base::TaskRunner* task_runner, 26 base::TaskRunner* task_runner,
28 const base::FilePath& file_path, 27 const base::FilePath& file_path,
29 int64 initial_offset, 28 int64 initial_offset,
30 const base::Time& expected_modification_time) { 29 const base::Time& expected_modification_time) {
31 return new LocalFileStreamReader(task_runner, file_path, initial_offset, 30 return new LocalFileStreamReader(
32 expected_modification_time); 31 task_runner, file_path, initial_offset, expected_modification_time);
33 } 32 }
34 33
35 LocalFileStreamReader::~LocalFileStreamReader() { 34 LocalFileStreamReader::~LocalFileStreamReader() {
36 } 35 }
37 36
38 int LocalFileStreamReader::Read(net::IOBuffer* buf, int buf_len, 37 int LocalFileStreamReader::Read(net::IOBuffer* buf,
39 const net::CompletionCallback& callback) { 38 int buf_len,
39 const net::CompletionCallback& callback) {
40 DCHECK(!has_pending_open_); 40 DCHECK(!has_pending_open_);
41 if (stream_impl_) 41 if (stream_impl_)
42 return stream_impl_->Read(buf, buf_len, callback); 42 return stream_impl_->Read(buf, buf_len, callback);
43 return Open(base::Bind(&LocalFileStreamReader::DidOpenForRead, 43 return Open(base::Bind(&LocalFileStreamReader::DidOpenForRead,
44 weak_factory_.GetWeakPtr(), 44 weak_factory_.GetWeakPtr(),
45 make_scoped_refptr(buf), buf_len, callback)); 45 make_scoped_refptr(buf),
46 buf_len,
47 callback));
46 } 48 }
47 49
48 int64 LocalFileStreamReader::GetLength( 50 int64 LocalFileStreamReader::GetLength(
49 const net::Int64CompletionCallback& callback) { 51 const net::Int64CompletionCallback& callback) {
50 const bool posted = base::FileUtilProxy::GetFileInfo( 52 const bool posted = base::FileUtilProxy::GetFileInfo(
51 task_runner_.get(), 53 task_runner_.get(),
52 file_path_, 54 file_path_,
53 base::Bind(&LocalFileStreamReader::DidGetFileInfoForGetLength, 55 base::Bind(&LocalFileStreamReader::DidGetFileInfoForGetLength,
54 weak_factory_.GetWeakPtr(), 56 weak_factory_.GetWeakPtr(),
55 callback)); 57 callback));
56 DCHECK(posted); 58 DCHECK(posted);
57 return net::ERR_IO_PENDING; 59 return net::ERR_IO_PENDING;
58 } 60 }
59 61
60 LocalFileStreamReader::LocalFileStreamReader( 62 LocalFileStreamReader::LocalFileStreamReader(
61 base::TaskRunner* task_runner, 63 base::TaskRunner* task_runner,
62 const base::FilePath& file_path, 64 const base::FilePath& file_path,
63 int64 initial_offset, 65 int64 initial_offset,
64 const base::Time& expected_modification_time) 66 const base::Time& expected_modification_time)
65 : task_runner_(task_runner), 67 : task_runner_(task_runner),
66 file_path_(file_path), 68 file_path_(file_path),
67 initial_offset_(initial_offset), 69 initial_offset_(initial_offset),
68 expected_modification_time_(expected_modification_time), 70 expected_modification_time_(expected_modification_time),
69 has_pending_open_(false), 71 has_pending_open_(false),
70 weak_factory_(this) {} 72 weak_factory_(this) {
73 }
71 74
72 int LocalFileStreamReader::Open(const net::CompletionCallback& callback) { 75 int LocalFileStreamReader::Open(const net::CompletionCallback& callback) {
73 DCHECK(!has_pending_open_); 76 DCHECK(!has_pending_open_);
74 DCHECK(!stream_impl_.get()); 77 DCHECK(!stream_impl_.get());
75 has_pending_open_ = true; 78 has_pending_open_ = true;
76 79
77 // Call GetLength first to make it perform last-modified-time verification, 80 // Call GetLength first to make it perform last-modified-time verification,
78 // and then call DidVerifyForOpen for do the rest. 81 // and then call DidVerifyForOpen for do the rest.
79 return GetLength(base::Bind(&LocalFileStreamReader::DidVerifyForOpen, 82 return GetLength(base::Bind(&LocalFileStreamReader::DidVerifyForOpen,
80 weak_factory_.GetWeakPtr(), callback)); 83 weak_factory_.GetWeakPtr(),
84 callback));
81 } 85 }
82 86
83 void LocalFileStreamReader::DidVerifyForOpen( 87 void LocalFileStreamReader::DidVerifyForOpen(
84 const net::CompletionCallback& callback, 88 const net::CompletionCallback& callback,
85 int64 get_length_result) { 89 int64 get_length_result) {
86 if (get_length_result < 0) { 90 if (get_length_result < 0) {
87 callback.Run(static_cast<int>(get_length_result)); 91 callback.Run(static_cast<int>(get_length_result));
88 return; 92 return;
89 } 93 }
90 94
91 stream_impl_.reset(new net::FileStream(task_runner_)); 95 stream_impl_.reset(new net::FileStream(task_runner_));
92 const int result = stream_impl_->Open( 96 const int result =
93 file_path_, kOpenFlagsForRead, 97 stream_impl_->Open(file_path_,
94 base::Bind(&LocalFileStreamReader::DidOpenFileStream, 98 kOpenFlagsForRead,
95 weak_factory_.GetWeakPtr(), 99 base::Bind(&LocalFileStreamReader::DidOpenFileStream,
96 callback)); 100 weak_factory_.GetWeakPtr(),
101 callback));
97 if (result != net::ERR_IO_PENDING) 102 if (result != net::ERR_IO_PENDING)
98 callback.Run(result); 103 callback.Run(result);
99 } 104 }
100 105
101 void LocalFileStreamReader::DidOpenFileStream( 106 void LocalFileStreamReader::DidOpenFileStream(
102 const net::CompletionCallback& callback, 107 const net::CompletionCallback& callback,
103 int result) { 108 int result) {
104 if (result != net::OK) { 109 if (result != net::OK) {
105 callback.Run(result); 110 callback.Run(result);
106 return; 111 return;
107 } 112 }
108 result = stream_impl_->Seek( 113 result =
109 base::File::FROM_BEGIN, initial_offset_, 114 stream_impl_->Seek(base::File::FROM_BEGIN,
110 base::Bind(&LocalFileStreamReader::DidSeekFileStream, 115 initial_offset_,
111 weak_factory_.GetWeakPtr(), 116 base::Bind(&LocalFileStreamReader::DidSeekFileStream,
112 callback)); 117 weak_factory_.GetWeakPtr(),
118 callback));
113 if (result != net::ERR_IO_PENDING) { 119 if (result != net::ERR_IO_PENDING) {
114 callback.Run(result); 120 callback.Run(result);
115 } 121 }
116 } 122 }
117 123
118 void LocalFileStreamReader::DidSeekFileStream( 124 void LocalFileStreamReader::DidSeekFileStream(
119 const net::CompletionCallback& callback, 125 const net::CompletionCallback& callback,
120 int64 seek_result) { 126 int64 seek_result) {
121 if (seek_result < 0) { 127 if (seek_result < 0) {
122 callback.Run(static_cast<int>(seek_result)); 128 callback.Run(static_cast<int>(seek_result));
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 callback.Run(net::FileErrorToNetError(error)); 165 callback.Run(net::FileErrorToNetError(error));
160 return; 166 return;
161 } 167 }
162 if (!VerifySnapshotTime(expected_modification_time_, file_info)) { 168 if (!VerifySnapshotTime(expected_modification_time_, file_info)) {
163 callback.Run(net::ERR_UPLOAD_FILE_CHANGED); 169 callback.Run(net::ERR_UPLOAD_FILE_CHANGED);
164 return; 170 return;
165 } 171 }
166 callback.Run(file_info.size); 172 callback.Run(file_info.size);
167 } 173 }
168 174
169 } // namespace webkit_blob 175 } // namespace storage
OLDNEW
« no previous file with comments | « storage/browser/blob/local_file_stream_reader.h ('k') | storage/browser/blob/view_blob_internals_job.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698