| Index: webkit/glue/multipart_response_delegate.cc
|
| diff --git a/webkit/glue/multipart_response_delegate.cc b/webkit/glue/multipart_response_delegate.cc
|
| index 53cdc3fa7b4a050a74c6dfc79c5c049d7eb4a57d..f45ec0fd4902a85de7ebe389f6fe7849f4259686 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),
|
| + raw_data_length_(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 raw_data_length) {
|
| // 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);
|
| + raw_data_length_ += raw_data_length;
|
| 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,8 @@ void MultipartResponseDelegate::OnReceivedData(const char* data,
|
| client_->didReceiveData(loader_,
|
| data_.data(),
|
| static_cast<int>(data_length),
|
| - -1);
|
| + raw_data_length_);
|
| + raw_data_length_ = 0;
|
| }
|
| }
|
| size_t boundary_end_pos = boundary_pos + boundary_.length();
|
| @@ -172,8 +176,12 @@ void MultipartResponseDelegate::OnReceivedData(const char* data,
|
| if (data_[data_.length() - 1] == '\n')
|
| send_length = data_.length();
|
| if (client_)
|
| - client_->didReceiveData(loader_, data_.data(), send_length, -1);
|
| + client_->didReceiveData(loader_,
|
| + data_.data(),
|
| + send_length,
|
| + raw_data_length_);
|
| data_ = data_.substr(send_length);
|
| + raw_data_length_ = 0;
|
| }
|
| }
|
|
|
| @@ -183,7 +191,9 @@ void MultipartResponseDelegate::OnCompletedRequest() {
|
| if (!processing_headers_ && !data_.empty() && !stop_sending_ && client_) {
|
| client_->didReceiveData(loader_,
|
| data_.data(),
|
| - static_cast<int>(data_.length()), -1);
|
| + static_cast<int>(data_.length()),
|
| + raw_data_length_);
|
| + raw_data_length_ = 0;
|
| }
|
| }
|
|
|
|
|