summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-29 03:42:00 +0000
committerwillchan@chromium.org <willchan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-07-29 03:42:00 +0000
commit5203e6009c150dc2d58e2d96bb54ecf8d9fcca18 (patch)
tree8fe2cebeb3110e3e1abcd4ab032e685ad525f45a /chrome/browser/renderer_host
parente39708d41ecfa363a6f4b5310713952bd2efa2d3 (diff)
downloadchromium_src-5203e6009c150dc2d58e2d96bb54ecf8d9fcca18.zip
chromium_src-5203e6009c150dc2d58e2d96bb54ecf8d9fcca18.tar.gz
chromium_src-5203e6009c150dc2d58e2d96bb54ecf8d9fcca18.tar.bz2
Add CHECKs to the ResourceHandler derived classes to see which is returning a NULL IOBuffer:data_.
BUG=http://crbug.com/16371 Review URL: http://codereview.chromium.org/159561 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@21940 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/async_resource_handler.cc28
-rw-r--r--chrome/browser/renderer_host/async_resource_handler.h5
-rw-r--r--chrome/browser/renderer_host/buffered_resource_handler.cc5
-rw-r--r--chrome/browser/renderer_host/cross_site_resource_handler.cc8
-rw-r--r--chrome/browser/renderer_host/download_resource_handler.cc3
-rw-r--r--chrome/browser/renderer_host/download_throttling_resource_handler.cc3
-rw-r--r--chrome/browser/renderer_host/safe_browsing_resource_handler.cc9
-rw-r--r--chrome/browser/renderer_host/save_file_resource_handler.cc3
-rw-r--r--chrome/browser/renderer_host/sync_resource_handler.cc3
9 files changed, 51 insertions, 16 deletions
diff --git a/chrome/browser/renderer_host/async_resource_handler.cc b/chrome/browser/renderer_host/async_resource_handler.cc
index 038fc8c..6b69db3 100644
--- a/chrome/browser/renderer_host/async_resource_handler.cc
+++ b/chrome/browser/renderer_host/async_resource_handler.cc
@@ -4,12 +4,16 @@
#include "chrome/browser/renderer_host/async_resource_handler.h"
+#include "base/logging.h"
#include "base/process.h"
#include "base/shared_memory.h"
#include "chrome/common/render_messages.h"
#include "net/base/io_buffer.h"
-SharedIOBuffer* AsyncResourceHandler::spare_read_buffer_;
+// When reading, we don't know if we are going to get EOF (0 bytes read), so
+// we typically have a buffer that we allocated but did not use. We keep
+// this buffer around for the next read as a small optimization.
+static SharedIOBuffer* g_spare_read_buffer = NULL;
// Our version of IOBuffer that uses shared memory.
class SharedIOBuffer : public net::IOBuffer {
@@ -22,6 +26,8 @@ class SharedIOBuffer : public net::IOBuffer {
}
}
~SharedIOBuffer() {
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK(g_spare_read_buffer != this);
data_ = NULL;
}
@@ -73,13 +79,17 @@ bool AsyncResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
int* buf_size, int min_size) {
DCHECK(min_size == -1);
static const int kReadBufSize = 32768;
- if (spare_read_buffer_) {
+ if (g_spare_read_buffer) {
DCHECK(!read_buffer_);
- read_buffer_.swap(&spare_read_buffer_);
+ read_buffer_.swap(&g_spare_read_buffer);
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK(read_buffer_->data());
} else {
read_buffer_ = new SharedIOBuffer(kReadBufSize);
if (!read_buffer_->ok())
return false;
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK(read_buffer_->data());
}
*buf = read_buffer_.get();
*buf_size = kReadBufSize;
@@ -126,18 +136,20 @@ bool AsyncResourceHandler::OnResponseCompleted(
security_info));
// If we still have a read buffer, then see about caching it for later...
- if (spare_read_buffer_) {
+ if (g_spare_read_buffer) {
read_buffer_ = NULL;
} else if (read_buffer_.get()) {
- read_buffer_.swap(&spare_read_buffer_);
+ read_buffer_.swap(&g_spare_read_buffer);
}
return true;
}
// static
void AsyncResourceHandler::GlobalCleanup() {
- if (spare_read_buffer_) {
- spare_read_buffer_->Release();
- spare_read_buffer_ = NULL;
+ if (g_spare_read_buffer) {
+ // Avoid the CHECK in SharedIOBuffer::~SharedIOBuffer().
+ SharedIOBuffer* tmp = g_spare_read_buffer;
+ g_spare_read_buffer = NULL;
+ tmp->Release();
}
}
diff --git a/chrome/browser/renderer_host/async_resource_handler.h b/chrome/browser/renderer_host/async_resource_handler.h
index cfb9fc5..89ecfad 100644
--- a/chrome/browser/renderer_host/async_resource_handler.h
+++ b/chrome/browser/renderer_host/async_resource_handler.h
@@ -38,11 +38,6 @@ class AsyncResourceHandler : public ResourceHandler {
static void GlobalCleanup();
private:
- // When reading, we don't know if we are going to get EOF (0 bytes read), so
- // we typically have a buffer that we allocated but did not use. We keep
- // this buffer around for the next read as a small optimization.
- static SharedIOBuffer* spare_read_buffer_;
-
scoped_refptr<SharedIOBuffer> read_buffer_;
ResourceDispatcherHost::Receiver* receiver_;
int process_id_;
diff --git a/chrome/browser/renderer_host/buffered_resource_handler.cc b/chrome/browser/renderer_host/buffered_resource_handler.cc
index cc9d2cb..8d0f17f 100644
--- a/chrome/browser/renderer_host/buffered_resource_handler.cc
+++ b/chrome/browser/renderer_host/buffered_resource_handler.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/renderer_host/buffered_resource_handler.h"
#include "base/histogram.h"
+#include "base/logging.h"
#include "base/string_util.h"
#include "net/base/mime_sniffer.h"
#include "net/base/net_errors.h"
@@ -88,6 +89,8 @@ bool BufferedResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
my_buffer_ = new net::IOBuffer(kMaxBytesToSniff);
*buf = my_buffer_.get();
*buf_size = kMaxBytesToSniff;
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK((*buf)->data());
return true;
}
@@ -98,6 +101,8 @@ bool BufferedResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
return false;
}
read_buffer_ = *buf;
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK(read_buffer_->data());
read_buffer_size_ = *buf_size;
DCHECK(read_buffer_size_ >= kMaxBytesToSniff * 2);
bytes_read_ = 0;
diff --git a/chrome/browser/renderer_host/cross_site_resource_handler.cc b/chrome/browser/renderer_host/cross_site_resource_handler.cc
index fdb7d4a..7b05a72 100644
--- a/chrome/browser/renderer_host/cross_site_resource_handler.cc
+++ b/chrome/browser/renderer_host/cross_site_resource_handler.cc
@@ -6,8 +6,10 @@
#include "chrome/browser/renderer_host/cross_site_resource_handler.h"
+#include "base/logging.h"
#include "base/message_loop.h"
#include "chrome/browser/renderer_host/render_view_host.h"
+#include "net/base/io_buffer.h"
namespace {
@@ -123,7 +125,11 @@ bool CrossSiteResourceHandler::OnResponseStarted(int request_id,
bool CrossSiteResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
int* buf_size, int min_size) {
- return next_handler_->OnWillRead(request_id, buf, buf_size, min_size);
+ bool rv = next_handler_->OnWillRead(request_id, buf, buf_size, min_size);
+ // TODO(willchan): Remove after debugging bug 16371.
+ if (rv)
+ CHECK((*buf)->data());
+ return rv;
}
bool CrossSiteResourceHandler::OnReadCompleted(int request_id,
diff --git a/chrome/browser/renderer_host/download_resource_handler.cc b/chrome/browser/renderer_host/download_resource_handler.cc
index b100df3..6661666 100644
--- a/chrome/browser/renderer_host/download_resource_handler.cc
+++ b/chrome/browser/renderer_host/download_resource_handler.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/renderer_host/download_resource_handler.h"
+#include "base/logging.h"
#include "chrome/browser/download/download_file.h"
#include "chrome/browser/download/download_manager.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
@@ -83,6 +84,8 @@ bool DownloadResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
read_buffer_ = new net::IOBuffer(*buf_size);
}
*buf = read_buffer_.get();
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK(read_buffer_->data());
return true;
}
diff --git a/chrome/browser/renderer_host/download_throttling_resource_handler.cc b/chrome/browser/renderer_host/download_throttling_resource_handler.cc
index fb56384..f3ad5bb 100644
--- a/chrome/browser/renderer_host/download_throttling_resource_handler.cc
+++ b/chrome/browser/renderer_host/download_throttling_resource_handler.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/renderer_host/download_throttling_resource_handler.h"
+#include "base/logging.h"
#include "chrome/browser/renderer_host/download_resource_handler.h"
#include "net/base/io_buffer.h"
@@ -71,6 +72,8 @@ bool DownloadThrottlingResourceHandler::OnWillRead(int request_id,
min_size = 1024;
tmp_buffer_ = new net::IOBuffer(min_size);
*buf = tmp_buffer_.get();
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK((*buf)->data());
*buf_size = min_size;
return true;
}
diff --git a/chrome/browser/renderer_host/safe_browsing_resource_handler.cc b/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
index 583a6dd..0d2af57 100644
--- a/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
+++ b/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
@@ -4,10 +4,12 @@
#include "chrome/browser/renderer_host/safe_browsing_resource_handler.h"
+#include "base/logging.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "chrome/browser/renderer_host/resource_message_filter.h"
#include "chrome/common/notification_service.h"
#include "net/base/net_errors.h"
+#include "net/base/io_buffer.h"
// Maximum time to wait for a gethash response from the Safe Browsing servers.
static const int kMaxGetHashMs = 1000;
@@ -103,7 +105,11 @@ bool SafeBrowsingResourceHandler::OnWillRead(int request_id,
paused_request_id_ = request_id;
}
- return next_handler_->OnWillRead(request_id, buf, buf_size, min_size);
+ bool rv = next_handler_->OnWillRead(request_id, buf, buf_size, min_size);
+ // TODO(willchan): Remove after debugging bug 16371.
+ if (rv)
+ CHECK((*buf)->data());
+ return rv;
}
bool SafeBrowsingResourceHandler::OnReadCompleted(int request_id,
@@ -205,4 +211,3 @@ void SafeBrowsingResourceHandler::Observe(NotificationType type,
Release();
}
}
-
diff --git a/chrome/browser/renderer_host/save_file_resource_handler.cc b/chrome/browser/renderer_host/save_file_resource_handler.cc
index b55795c..3289df1 100644
--- a/chrome/browser/renderer_host/save_file_resource_handler.cc
+++ b/chrome/browser/renderer_host/save_file_resource_handler.cc
@@ -4,6 +4,7 @@
#include "chrome/browser/renderer_host/save_file_resource_handler.h"
+#include "base/logging.h"
#include "base/message_loop.h"
#include "base/string_util.h"
#include "chrome/browser/download/save_file_manager.h"
@@ -56,6 +57,8 @@ bool SaveFileResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
read_buffer_ = new net::IOBuffer(*buf_size);
}
*buf = read_buffer_.get();
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK(read_buffer_->data());
return true;
}
diff --git a/chrome/browser/renderer_host/sync_resource_handler.cc b/chrome/browser/renderer_host/sync_resource_handler.cc
index 5be45a9..01d0d8f 100644
--- a/chrome/browser/renderer_host/sync_resource_handler.cc
+++ b/chrome/browser/renderer_host/sync_resource_handler.cc
@@ -3,6 +3,7 @@
// found in the LICENSE file.
#include "chrome/browser/renderer_host/sync_resource_handler.h"
+#include "base/logging.h"
#include "chrome/common/render_messages.h"
SyncResourceHandler::SyncResourceHandler(
@@ -43,6 +44,8 @@ bool SyncResourceHandler::OnWillRead(int request_id, net::IOBuffer** buf,
int* buf_size, int min_size) {
DCHECK(min_size == -1);
*buf = read_buffer_.get();
+ // TODO(willchan): Remove after debugging bug 16371.
+ CHECK(read_buffer_->data());
*buf_size = kReadBufSize;
return true;
}