Index: webkit/glue/multipart_response_delegate.cc |
diff --git a/webkit/glue/multipart_response_delegate.cc b/webkit/glue/multipart_response_delegate.cc |
index a32520ec1fba14b05eb0b310c92e214dfa4e7641..c69070c0d12de039385e06c9304b965f0450f48f 100644 |
--- a/webkit/glue/multipart_response_delegate.cc |
+++ b/webkit/glue/multipart_response_delegate.cc |
@@ -62,6 +62,7 @@ MultipartResponseDelegate::MultipartResponseDelegate( |
: client_(client), |
loader_(loader), |
original_response_(response), |
+ length_received_(0), |
boundary_("--"), |
first_received_data_(true), |
processing_headers_(false), |
@@ -76,7 +77,8 @@ MultipartResponseDelegate::MultipartResponseDelegate( |
} |
void MultipartResponseDelegate::OnReceivedData(const char* data, |
- int data_len) { |
+ int data_len, |
+ int length_received) { |
// stop_sending_ means that we've already received the final boundary token. |
// The server should stop sending us data at this point, but if it does, we |
// just throw it away. |
@@ -84,6 +86,7 @@ void MultipartResponseDelegate::OnReceivedData(const char* data, |
return; |
data_.append(data, data_len); |
+ length_received_ += length_received; |
if (first_received_data_) { |
// Some servers don't send a boundary token before the first chunk of |
// data. We handle this case anyway (Gecko does too). |
@@ -141,7 +144,9 @@ void MultipartResponseDelegate::OnReceivedData(const char* data, |
// FIXME(vsevik): rename once renamed in webkit |
client_->didReceiveData2(loader_, |
data_.data(), |
- static_cast<int>(data_length), -1); |
+ static_cast<int>(data_length), |
+ length_received_); |
+ length_received_ = 0; |
} |
} |
size_t boundary_end_pos = boundary_pos + boundary_.length(); |
@@ -173,8 +178,12 @@ void MultipartResponseDelegate::OnReceivedData(const char* data, |
send_length = data_.length(); |
// FIXME(vsevik): rename didReceiveData2 once renamed in webkit |
if (client_) |
- client_->didReceiveData2(loader_, data_.data(), send_length, -1); |
+ client_->didReceiveData2(loader_, |
+ data_.data(), |
+ send_length, |
+ length_received_); |
data_ = data_.substr(send_length); |
+ length_received_ = 0; |
} |
} |
@@ -185,7 +194,9 @@ void MultipartResponseDelegate::OnCompletedRequest() { |
// FIXME(vsevik): rename didReceiveData2 once renamed in webkit |
client_->didReceiveData2(loader_, |
data_.data(), |
- static_cast<int>(data_.length()), -1); |
+ static_cast<int>(data_.length()), |
+ length_received_); |
+ length_received_ = 0; |
} |
} |