summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgavinp@chromium.org <gavinp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-06 19:16:33 +0000
committergavinp@chromium.org <gavinp@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-07-06 19:16:33 +0000
commit68a7e4fdad09f8c5415ac1b3fc3286b9b38eeed6 (patch)
tree79fabd84109fbeaabe9a198e0d02a3d0093e8677
parentf90b6ed5f2e8bb7a6d942191dad7abe293a0c7cb (diff)
downloadchromium_src-68a7e4fdad09f8c5415ac1b3fc3286b9b38eeed6.zip
chromium_src-68a7e4fdad09f8c5415ac1b3fc3286b9b38eeed6.tar.gz
chromium_src-68a7e4fdad09f8c5415ac1b3fc3286b9b38eeed6.tar.bz2
Add a CHECK to narrow down http://crbug.com/124680
R=jam@chromium.org BUG=124680 Review URL: https://chromiumcodereview.appspot.com/10690093 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@145611 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--content/browser/renderer_host/async_resource_handler.cc12
-rw-r--r--content/browser/renderer_host/async_resource_handler.h2
2 files changed, 13 insertions, 1 deletions
diff --git a/content/browser/renderer_host/async_resource_handler.cc b/content/browser/renderer_host/async_resource_handler.cc
index 03366cb..8628e75 100644
--- a/content/browser/renderer_host/async_resource_handler.cc
+++ b/content/browser/renderer_host/async_resource_handler.cc
@@ -93,7 +93,8 @@ AsyncResourceHandler::AsyncResourceHandler(
rdh_(rdh),
next_buffer_size_(kInitialReadBufSize),
pending_data_count_(0),
- did_defer_(false) {
+ did_defer_(false),
+ sent_received_response_msg_(false) {
// Set a back-pointer from ResourceRequestInfoImpl to |this|, so that the
// ResourceDispatcherHostImpl can send us IPC messages.
// TODO(darin): Implement an IPC message filter instead?
@@ -183,6 +184,7 @@ bool AsyncResourceHandler::OnResponseStarted(int request_id,
response->head.response_start = TimeTicks::Now();
filter_->Send(new ResourceMsg_ReceivedResponse(
routing_id_, request_id, response->head));
+ sent_received_response_msg_ = true;
if (request_->response_info().metadata) {
std::vector<char> copy(request_->response_info().metadata->data(),
@@ -282,6 +284,14 @@ bool AsyncResourceHandler::OnResponseCompleted(
base::strlcpy(url_buf, request_->url().spec().c_str(), arraysize(url_buf));
base::debug::Alias(url_buf);
+ // TODO(gavinp): Remove this CHECK when we figure out the cause of
+ // http://crbug.com/124680 . This check mirrors closely check in
+ // WebURLLoaderImpl::OnCompletedRequest that routes this message to a WebCore
+ // ResourceHandleInternal which asserts on its state and crashes. By crashing
+ // when the message is sent, we should get better crash reports.
+ CHECK(status.status() != net::URLRequestStatus::SUCCESS ||
+ sent_received_response_msg_);
+
TimeTicks completion_time = TimeTicks::Now();
filter_->Send(new ResourceMsg_RequestComplete(routing_id_,
request_id,
diff --git a/content/browser/renderer_host/async_resource_handler.h b/content/browser/renderer_host/async_resource_handler.h
index 53911db..9e9e374 100644
--- a/content/browser/renderer_host/async_resource_handler.h
+++ b/content/browser/renderer_host/async_resource_handler.h
@@ -91,6 +91,8 @@ class AsyncResourceHandler : public ResourceHandler {
bool did_defer_;
+ bool sent_received_response_msg_;
+
DISALLOW_COPY_AND_ASSIGN(AsyncResourceHandler);
};