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

Side by Side Diff: net/url_request/url_fetcher_response_writer.h

Issue 2425673006: Make URLFetcherFileWriter::Finish() skip closing file when there is an error (Closed)
Patch Set: Fix another subclass Created 4 years, 2 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ 5 #ifndef NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_
6 #define NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ 6 #define NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
(...skipping 27 matching lines...) Expand all
38 // Initialize() success results in discarding already written data. 38 // Initialize() success results in discarding already written data.
39 virtual int Initialize(const CompletionCallback& callback) = 0; 39 virtual int Initialize(const CompletionCallback& callback) = 0;
40 40
41 // Writes |num_bytes| bytes in |buffer|, and returns the number of bytes 41 // Writes |num_bytes| bytes in |buffer|, and returns the number of bytes
42 // written or an error code. If ERR_IO_PENDING is returned, |callback| will be 42 // written or an error code. If ERR_IO_PENDING is returned, |callback| will be
43 // run later with the result. 43 // run later with the result.
44 virtual int Write(IOBuffer* buffer, 44 virtual int Write(IOBuffer* buffer,
45 int num_bytes, 45 int num_bytes,
46 const CompletionCallback& callback) = 0; 46 const CompletionCallback& callback) = 0;
47 47
48 // Finishes writing. If ERR_IO_PENDING is returned, |callback| will be run 48 // Finishes writing. If |net_error| is not OK, the writer might choose to skip
49 // graceful shutdown. If ERR_IO_PENDING is returned, |callback| will be run
mmenke 2016/10/19 14:32:29 Also, think we should be more explicit that if net
xunjieli 2016/10/19 15:19:28 Done.
49 // later with the result. 50 // later with the result.
50 virtual int Finish(const CompletionCallback& callback) = 0; 51 virtual int Finish(int net_error, const CompletionCallback& callback) = 0;
51 52
52 // Returns this instance's pointer as URLFetcherStringWriter when possible. 53 // Returns this instance's pointer as URLFetcherStringWriter when possible.
53 virtual URLFetcherStringWriter* AsStringWriter(); 54 virtual URLFetcherStringWriter* AsStringWriter();
54 55
55 // Returns this instance's pointer as URLFetcherFileWriter when possible. 56 // Returns this instance's pointer as URLFetcherFileWriter when possible.
56 virtual URLFetcherFileWriter* AsFileWriter(); 57 virtual URLFetcherFileWriter* AsFileWriter();
57 }; 58 };
58 59
59 // URLFetcherResponseWriter implementation for std::string. 60 // URLFetcherResponseWriter implementation for std::string.
60 class NET_EXPORT URLFetcherStringWriter : public URLFetcherResponseWriter { 61 class NET_EXPORT URLFetcherStringWriter : public URLFetcherResponseWriter {
61 public: 62 public:
62 URLFetcherStringWriter(); 63 URLFetcherStringWriter();
63 ~URLFetcherStringWriter() override; 64 ~URLFetcherStringWriter() override;
64 65
65 const std::string& data() const { return data_; } 66 const std::string& data() const { return data_; }
66 67
67 // URLFetcherResponseWriter overrides: 68 // URLFetcherResponseWriter overrides:
68 int Initialize(const CompletionCallback& callback) override; 69 int Initialize(const CompletionCallback& callback) override;
69 int Write(IOBuffer* buffer, 70 int Write(IOBuffer* buffer,
70 int num_bytes, 71 int num_bytes,
71 const CompletionCallback& callback) override; 72 const CompletionCallback& callback) override;
72 int Finish(const CompletionCallback& callback) override; 73 int Finish(int net_error, const CompletionCallback& callback) override;
73 URLFetcherStringWriter* AsStringWriter() override; 74 URLFetcherStringWriter* AsStringWriter() override;
74 75
75 private: 76 private:
76 std::string data_; 77 std::string data_;
77 78
78 DISALLOW_COPY_AND_ASSIGN(URLFetcherStringWriter); 79 DISALLOW_COPY_AND_ASSIGN(URLFetcherStringWriter);
79 }; 80 };
80 81
81 // URLFetcherResponseWriter implementation for files. 82 // URLFetcherResponseWriter implementation for files.
82 class NET_EXPORT URLFetcherFileWriter : public URLFetcherResponseWriter { 83 class NET_EXPORT URLFetcherFileWriter : public URLFetcherResponseWriter {
83 public: 84 public:
84 // |file_path| is used as the destination path. If |file_path| is empty, 85 // |file_path| is used as the destination path. If |file_path| is empty,
85 // Initialize() will create a temporary file. 86 // Initialize() will create a temporary file.
86 URLFetcherFileWriter( 87 URLFetcherFileWriter(
87 scoped_refptr<base::SequencedTaskRunner> file_task_runner, 88 scoped_refptr<base::SequencedTaskRunner> file_task_runner,
88 const base::FilePath& file_path); 89 const base::FilePath& file_path);
89 ~URLFetcherFileWriter() override; 90 ~URLFetcherFileWriter() override;
90 91
91 const base::FilePath& file_path() const { return file_path_; } 92 const base::FilePath& file_path() const { return file_path_; }
92 93
93 // URLFetcherResponseWriter overrides: 94 // URLFetcherResponseWriter overrides:
94 int Initialize(const CompletionCallback& callback) override; 95 int Initialize(const CompletionCallback& callback) override;
95 int Write(IOBuffer* buffer, 96 int Write(IOBuffer* buffer,
96 int num_bytes, 97 int num_bytes,
97 const CompletionCallback& callback) override; 98 const CompletionCallback& callback) override;
98 int Finish(const CompletionCallback& callback) override; 99 int Finish(int net_error, const CompletionCallback& callback) override;
99 URLFetcherFileWriter* AsFileWriter() override; 100 URLFetcherFileWriter* AsFileWriter() override;
100 101
101 // Drops ownership of the file at |file_path_|. 102 // Drops ownership of the file at |file_path_|.
102 // This class will not delete it or write to it again. 103 // This class will not delete it or write to it again.
103 void DisownFile(); 104 void DisownFile();
104 105
105 private: 106 private:
106 // Called when a write has been done. 107 // Called when a write has been done.
107 void DidWrite(const CompletionCallback& callback, int result); 108 void DidWrite(const CompletionCallback& callback, int result);
108 109
(...skipping 26 matching lines...) Expand all
135 136
136 // Callbacks are created for use with base::FileUtilProxy. 137 // Callbacks are created for use with base::FileUtilProxy.
137 base::WeakPtrFactory<URLFetcherFileWriter> weak_factory_; 138 base::WeakPtrFactory<URLFetcherFileWriter> weak_factory_;
138 139
139 DISALLOW_COPY_AND_ASSIGN(URLFetcherFileWriter); 140 DISALLOW_COPY_AND_ASSIGN(URLFetcherFileWriter);
140 }; 141 };
141 142
142 } // namespace net 143 } // namespace net
143 144
144 #endif // NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_ 145 #endif // NET_URL_REQUEST_URL_FETCHER_RESPONSE_WRITER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698