Merge revision 1418 changes:
- Make CefURLRequest::GetResponse() data available before download completion (issue #956). git-svn-id: https://chromiumembedded.googlecode.com/svn/branches/1547@1419 5089003a-bbd8-11dd-ad1f-f1f9622dbc98
This commit is contained in:
parent
65694f4b3b
commit
0f3da5f36b
|
@ -264,15 +264,8 @@ class CefBrowserURLRequest::Context
|
|||
|
||||
error_code_ = static_cast<CefURLRequest::ErrorCode>(status.error());
|
||||
|
||||
response_ = new CefResponseImpl();
|
||||
CefResponseImpl* responseImpl =
|
||||
static_cast<CefResponseImpl*>(response_.get());
|
||||
|
||||
net::HttpResponseHeaders* headers = fetcher_->GetResponseHeaders();
|
||||
if (headers)
|
||||
responseImpl->SetResponseHeaders(*headers);
|
||||
|
||||
responseImpl->SetReadOnly(true);
|
||||
if(!response_.get())
|
||||
OnResponse();
|
||||
}
|
||||
|
||||
DCHECK(url_request_.get());
|
||||
|
@ -289,6 +282,9 @@ class CefBrowserURLRequest::Context
|
|||
DCHECK(CalledOnValidThread());
|
||||
DCHECK(url_request_.get());
|
||||
|
||||
if(!response_.get())
|
||||
OnResponse();
|
||||
|
||||
NotifyUploadProgressIfNecessary();
|
||||
|
||||
client_->OnDownloadProgress(url_request_.get(), current, total);
|
||||
|
@ -297,6 +293,10 @@ class CefBrowserURLRequest::Context
|
|||
void OnDownloadData(scoped_ptr<std::string> download_data) {
|
||||
DCHECK(CalledOnValidThread());
|
||||
DCHECK(url_request_.get());
|
||||
|
||||
if(!response_.get())
|
||||
OnResponse();
|
||||
|
||||
client_->OnDownloadData(url_request_.get(), download_data->c_str(),
|
||||
download_data->length());
|
||||
}
|
||||
|
@ -327,6 +327,20 @@ class CefBrowserURLRequest::Context
|
|||
}
|
||||
}
|
||||
|
||||
void OnResponse() {
|
||||
if (fetcher_.get()) {
|
||||
response_ = new CefResponseImpl();
|
||||
CefResponseImpl* responseImpl =
|
||||
static_cast<CefResponseImpl*>(response_.get());
|
||||
|
||||
net::HttpResponseHeaders* headers = fetcher_->GetResponseHeaders();
|
||||
if (headers)
|
||||
responseImpl->SetResponseHeaders(*headers);
|
||||
|
||||
responseImpl->SetReadOnly(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Members only accessed on the initialization thread.
|
||||
CefRefPtr<CefBrowserURLRequest> url_request_;
|
||||
CefRefPtr<CefRequest> request_;
|
||||
|
|
|
@ -436,6 +436,9 @@ class RequestClient : public CefURLRequestClient {
|
|||
virtual void OnDownloadProgress(CefRefPtr<CefURLRequest> request,
|
||||
uint64 current,
|
||||
uint64 total) OVERRIDE {
|
||||
response_ = request->GetResponse();
|
||||
EXPECT_TRUE(response_);
|
||||
EXPECT_TRUE(response_->IsReadOnly());
|
||||
download_progress_ct_++;
|
||||
download_total_ = total;
|
||||
}
|
||||
|
@ -443,6 +446,9 @@ class RequestClient : public CefURLRequestClient {
|
|||
virtual void OnDownloadData(CefRefPtr<CefURLRequest> request,
|
||||
const void* data,
|
||||
size_t data_length) OVERRIDE {
|
||||
response_ = request->GetResponse();
|
||||
EXPECT_TRUE(response_);
|
||||
EXPECT_TRUE(response_->IsReadOnly());
|
||||
download_data_ct_++;
|
||||
download_data_ += std::string(static_cast<const char*>(data), data_length);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue