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

Side by Side Diff: content/browser/streams/stream.cc

Issue 2368913002: Fix stream errors that occur after a stream starts not propagating. (Closed)
Patch Set: fix tests 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 #include "content/browser/streams/stream.h" 5 #include "content/browser/streams/stream.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/single_thread_task_runner.h" 9 #include "base/single_thread_task_runner.h"
10 #include "base/threading/thread_task_runner_handle.h" 10 #include "base/threading/thread_task_runner_handle.h"
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 memcpy(io_buffer->data(), data, size); 111 memcpy(io_buffer->data(), data, size);
112 AddData(io_buffer, size); 112 AddData(io_buffer, size);
113 } 113 }
114 114
115 void Stream::Flush() { 115 void Stream::Flush() {
116 if (!writer_.get()) 116 if (!writer_.get())
117 return; 117 return;
118 writer_->Flush(); 118 writer_->Flush();
119 } 119 }
120 120
121 void Stream::Finalize() { 121 void Stream::Finalize(int status) {
122 if (!writer_.get()) 122 if (!writer_.get())
123 return; 123 return;
124 124
125 writer_->Close(0); 125 writer_->Close(status);
126 writer_.reset(); 126 writer_.reset();
127 127
128 // Continue asynchronously. 128 // Continue asynchronously.
129 base::ThreadTaskRunnerHandle::Get()->PostTask( 129 base::ThreadTaskRunnerHandle::Get()->PostTask(
130 FROM_HERE, 130 FROM_HERE,
131 base::Bind(&Stream::OnDataAvailable, weak_ptr_factory_.GetWeakPtr())); 131 base::Bind(&Stream::OnDataAvailable, weak_ptr_factory_.GetWeakPtr()));
132 } 132 }
133 133
134 Stream::StreamState Stream::ReadRawData(net::IOBuffer* buf, 134 Stream::StreamState Stream::ReadRawData(net::IOBuffer* buf,
135 int buf_size, 135 int buf_size,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 // Prevent deletion until this function ends. 180 // Prevent deletion until this function ends.
181 scoped_refptr<Stream> ref(this); 181 scoped_refptr<Stream> ref(this);
182 182
183 CHECK(stream_handle_); 183 CHECK(stream_handle_);
184 stream_handle_ = NULL; 184 stream_handle_ = NULL;
185 registry_->UnregisterStream(url()); 185 registry_->UnregisterStream(url());
186 if (write_observer_) 186 if (write_observer_)
187 write_observer_->OnClose(this); 187 write_observer_->OnClose(this);
188 } 188 }
189 189
190 int Stream::GetStatus() {
191 return reader_->GetStatus();
192 }
193
190 void Stream::OnSpaceAvailable() { 194 void Stream::OnSpaceAvailable() {
191 can_add_data_ = true; 195 can_add_data_ = true;
192 if (write_observer_) 196 if (write_observer_)
193 write_observer_->OnSpaceAvailable(this); 197 write_observer_->OnSpaceAvailable(this);
194 } 198 }
195 199
196 void Stream::OnDataAvailable() { 200 void Stream::OnDataAvailable() {
197 if (read_observer_) 201 if (read_observer_)
198 read_observer_->OnDataAvailable(this); 202 read_observer_->OnDataAvailable(this);
199 } 203 }
200 204
201 void Stream::ClearBuffer() { 205 void Stream::ClearBuffer() {
202 data_ = NULL; 206 data_ = NULL;
203 data_length_ = 0; 207 data_length_ = 0;
204 data_bytes_read_ = 0; 208 data_bytes_read_ = 0;
205 } 209 }
206 210
207 } // namespace content 211 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698