summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host
diff options
context:
space:
mode:
authorjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-07 07:47:52 +0000
committerjcampan@chromium.org <jcampan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-03-07 07:47:52 +0000
commitcdb11b555f79840fc9f793d808af13bcaf9bd1f7 (patch)
treef4b81528e7f534fe25b7e2c60321a7324ff4b956 /chrome/browser/renderer_host
parent61e978ad63e1963c41db50e7b9b40580391a6170 (diff)
downloadchromium_src-cdb11b555f79840fc9f793d808af13bcaf9bd1f7.zip
chromium_src-cdb11b555f79840fc9f793d808af13bcaf9bd1f7.tar.gz
chromium_src-cdb11b555f79840fc9f793d808af13bcaf9bd1f7.tar.bz2
Landing again the CL that adds security info to canceled requests (it was breaking NPAPI tests on Vista due to an erroneuous commented line).
TBR=darin Review URL: http://codereview.chromium.org/39309 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11197 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host')
-rw-r--r--chrome/browser/renderer_host/async_resource_handler.cc10
-rw-r--r--chrome/browser/renderer_host/async_resource_handler.h6
-rw-r--r--chrome/browser/renderer_host/buffered_resource_handler.cc11
-rw-r--r--chrome/browser/renderer_host/buffered_resource_handler.h4
-rw-r--r--chrome/browser/renderer_host/cross_site_resource_handler.cc15
-rw-r--r--chrome/browser/renderer_host/cross_site_resource_handler.h5
-rw-r--r--chrome/browser/renderer_host/download_resource_handler.cc3
-rw-r--r--chrome/browser/renderer_host/download_resource_handler.h4
-rw-r--r--chrome/browser/renderer_host/download_throttling_resource_handler.cc6
-rw-r--r--chrome/browser/renderer_host/download_throttling_resource_handler.h3
-rw-r--r--chrome/browser/renderer_host/resource_dispatcher_host.cc22
-rw-r--r--chrome/browser/renderer_host/resource_handler.h5
-rw-r--r--chrome/browser/renderer_host/safe_browsing_resource_handler.cc14
-rw-r--r--chrome/browser/renderer_host/safe_browsing_resource_handler.h7
-rw-r--r--chrome/browser/renderer_host/save_file_resource_handler.cc3
-rw-r--r--chrome/browser/renderer_host/save_file_resource_handler.h4
-rw-r--r--chrome/browser/renderer_host/sync_resource_handler.cc6
-rw-r--r--chrome/browser/renderer_host/sync_resource_handler.h6
18 files changed, 100 insertions, 34 deletions
diff --git a/chrome/browser/renderer_host/async_resource_handler.cc b/chrome/browser/renderer_host/async_resource_handler.cc
index 881d686..650c7c3 100644
--- a/chrome/browser/renderer_host/async_resource_handler.cc
+++ b/chrome/browser/renderer_host/async_resource_handler.cc
@@ -116,10 +116,14 @@ bool AsyncResourceHandler::OnReadCompleted(int request_id, int* bytes_read) {
return true;
}
-bool AsyncResourceHandler::OnResponseCompleted(int request_id,
- const URLRequestStatus& status) {
+bool AsyncResourceHandler::OnResponseCompleted(
+ int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info) {
receiver_->Send(new ViewMsg_Resource_RequestComplete(routing_id_,
- request_id, status));
+ request_id,
+ status,
+ security_info));
// If we still have a read buffer, then see about caching it for later...
if (spare_read_buffer_) {
diff --git a/chrome/browser/renderer_host/async_resource_handler.h b/chrome/browser/renderer_host/async_resource_handler.h
index e966a80..7407e6d 100644
--- a/chrome/browser/renderer_host/async_resource_handler.h
+++ b/chrome/browser/renderer_host/async_resource_handler.h
@@ -5,6 +5,8 @@
#ifndef CHROME_BROWSER_RENDERER_HOST_ASYNC_RESOURCE_HANDLER_H_
#define CHROME_BROWSER_RENDERER_HOST_ASYNC_RESOURCE_HANDLER_H_
+#include <string>
+
#include "base/process.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "chrome/browser/renderer_host/resource_handler.h"
@@ -29,7 +31,9 @@ class AsyncResourceHandler : public ResourceHandler {
bool OnWillRead(int request_id, net::IOBuffer** buf, int* buf_size,
int min_size);
bool OnReadCompleted(int request_id, int* bytes_read);
- bool OnResponseCompleted(int request_id, const URLRequestStatus& status);
+ bool OnResponseCompleted(int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info);
static void GlobalCleanup();
diff --git a/chrome/browser/renderer_host/buffered_resource_handler.cc b/chrome/browser/renderer_host/buffered_resource_handler.cc
index e1144c2..c49666c7 100644
--- a/chrome/browser/renderer_host/buffered_resource_handler.cc
+++ b/chrome/browser/renderer_host/buffered_resource_handler.cc
@@ -72,8 +72,10 @@ bool BufferedResourceHandler::OnResponseStarted(int request_id,
bool BufferedResourceHandler::OnResponseCompleted(
- int request_id, const URLRequestStatus& status) {
- return real_handler_->OnResponseCompleted(request_id, status);
+ int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info) {
+ return real_handler_->OnResponseCompleted(request_id, status, security_info);
}
// We'll let the original event handler provide a buffer, and reuse it for
@@ -242,7 +244,7 @@ bool BufferedResourceHandler::CompleteResponseStarted(int request_id,
// own error page instead of triggering a download.
// TODO(abarth): We should abstract the response_code test, but this kind
// of check is scattered throughout our codebase.
- request_->CancelWithError(net::ERR_FILE_NOT_FOUND);
+ request_->SimulateError(net::ERR_FILE_NOT_FOUND);
return false;
}
@@ -270,7 +272,8 @@ bool BufferedResourceHandler::CompleteResponseStarted(int request_id,
// handled by an external source (the browser's DownloadManager).
real_handler_->OnResponseStarted(info->request_id, response_);
URLRequestStatus status(URLRequestStatus::HANDLED_EXTERNALLY, 0);
- real_handler_->OnResponseCompleted(info->request_id, status);
+ real_handler_->OnResponseCompleted(info->request_id, status,
+ std::string());
// Ditch the old async handler that talks to the renderer for the new
// download handler that talks to the DownloadManager.
diff --git a/chrome/browser/renderer_host/buffered_resource_handler.h b/chrome/browser/renderer_host/buffered_resource_handler.h
index 97907b5..e553aca 100644
--- a/chrome/browser/renderer_host/buffered_resource_handler.h
+++ b/chrome/browser/renderer_host/buffered_resource_handler.h
@@ -26,7 +26,9 @@ class BufferedResourceHandler : public ResourceHandler {
bool OnWillRead(int request_id, net::IOBuffer** buf, int* buf_size,
int min_size);
bool OnReadCompleted(int request_id, int* bytes_read);
- bool OnResponseCompleted(int request_id, const URLRequestStatus& status);
+ bool OnResponseCompleted(int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info);
private:
// Returns true if we should delay OnResponseStarted forwarding.
diff --git a/chrome/browser/renderer_host/cross_site_resource_handler.cc b/chrome/browser/renderer_host/cross_site_resource_handler.cc
index 363d451..1e25f17 100644
--- a/chrome/browser/renderer_host/cross_site_resource_handler.cc
+++ b/chrome/browser/renderer_host/cross_site_resource_handler.cc
@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include <string>
+
#include "chrome/browser/renderer_host/cross_site_resource_handler.h"
#include "chrome/browser/renderer_host/render_view_host.h"
@@ -129,11 +131,13 @@ bool CrossSiteResourceHandler::OnReadCompleted(int request_id,
bool CrossSiteResourceHandler::OnResponseCompleted(
int request_id,
- const URLRequestStatus& status) {
+ const URLRequestStatus& status,
+ const std::string& security_info) {
if (!in_cross_site_transition_) {
if (has_started_response_) {
// We've already completed the transition, so just pass it through.
- return next_handler_->OnResponseCompleted(request_id, status);
+ return next_handler_->OnResponseCompleted(request_id, status,
+ security_info);
} else {
// Some types of failures will call OnResponseCompleted without calling
// CrossSiteResourceHandler::OnResponseStarted.
@@ -145,7 +149,8 @@ bool CrossSiteResourceHandler::OnResponseCompleted(
new CancelPendingRenderViewTask(render_process_host_id_,
render_view_id_);
rdh_->ui_loop()->PostTask(FROM_HERE, task);
- return next_handler_->OnResponseCompleted(request_id, status);
+ return next_handler_->OnResponseCompleted(request_id, status,
+ security_info);
} else {
// An error occured, we should wait now for the cross-site transition,
// so that the error message (e.g., 404) can be displayed to the user.
@@ -161,6 +166,7 @@ bool CrossSiteResourceHandler::OnResponseCompleted(
// We have to buffer the call until after the transition completes.
completed_during_transition_ = true;
completed_status_ = status;
+ completed_security_info_ = security_info;
// Return false to tell RDH not to notify the world or clean up the
// pending request. We will do so in ResumeResponse.
@@ -201,7 +207,8 @@ void CrossSiteResourceHandler::ResumeResponse() {
// If the response completed during the transition, notify the next
// event handler.
if (completed_during_transition_) {
- next_handler_->OnResponseCompleted(request_id_, completed_status_);
+ next_handler_->OnResponseCompleted(request_id_, completed_status_,
+ completed_security_info_);
// Since we didn't notify the world or clean up the pending request in
// RDH::OnResponseCompleted during the transition, we should do it now.
diff --git a/chrome/browser/renderer_host/cross_site_resource_handler.h b/chrome/browser/renderer_host/cross_site_resource_handler.h
index 7d57c76..2ae2c75 100644
--- a/chrome/browser/renderer_host/cross_site_resource_handler.h
+++ b/chrome/browser/renderer_host/cross_site_resource_handler.h
@@ -27,7 +27,9 @@ class CrossSiteResourceHandler : public ResourceHandler {
bool OnWillRead(int request_id, net::IOBuffer** buf, int* buf_size,
int min_size);
bool OnReadCompleted(int request_id, int* bytes_read);
- bool OnResponseCompleted(int request_id, const URLRequestStatus& status);
+ bool OnResponseCompleted(int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info);
// We can now send the response to the new renderer, which will cause
// WebContents to swap in the new renderer and destroy the old one.
@@ -49,6 +51,7 @@ class CrossSiteResourceHandler : public ResourceHandler {
int request_id_;
bool completed_during_transition_;
URLRequestStatus completed_status_;
+ std::string completed_security_info_;
ResourceResponse* response_;
ResourceDispatcherHost* rdh_;
diff --git a/chrome/browser/renderer_host/download_resource_handler.cc b/chrome/browser/renderer_host/download_resource_handler.cc
index 37e7e89..2187506 100644
--- a/chrome/browser/renderer_host/download_resource_handler.cc
+++ b/chrome/browser/renderer_host/download_resource_handler.cc
@@ -113,7 +113,8 @@ bool DownloadResourceHandler::OnReadCompleted(int request_id, int* bytes_read) {
bool DownloadResourceHandler::OnResponseCompleted(
int request_id,
- const URLRequestStatus& status) {
+ const URLRequestStatus& status,
+ const std::string& security_info) {
download_manager_->file_loop()->PostTask(FROM_HERE,
NewRunnableMethod(download_manager_,
&DownloadFileManager::DownloadFinished,
diff --git a/chrome/browser/renderer_host/download_resource_handler.h b/chrome/browser/renderer_host/download_resource_handler.h
index dfc047e..d9afa42 100644
--- a/chrome/browser/renderer_host/download_resource_handler.h
+++ b/chrome/browser/renderer_host/download_resource_handler.h
@@ -37,7 +37,9 @@ class DownloadResourceHandler : public ResourceHandler {
bool OnReadCompleted(int request_id, int* bytes_read);
- bool OnResponseCompleted(int request_id, const URLRequestStatus& status);
+ bool OnResponseCompleted(int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info);
// If the content-length header is not present (or contains something other
// than numbers), the incoming content_length is -1 (unknown size).
diff --git a/chrome/browser/renderer_host/download_throttling_resource_handler.cc b/chrome/browser/renderer_host/download_throttling_resource_handler.cc
index f049788..2e8042b 100644
--- a/chrome/browser/renderer_host/download_throttling_resource_handler.cc
+++ b/chrome/browser/renderer_host/download_throttling_resource_handler.cc
@@ -99,9 +99,11 @@ bool DownloadThrottlingResourceHandler::OnReadCompleted(int request_id,
bool DownloadThrottlingResourceHandler::OnResponseCompleted(
int request_id,
- const URLRequestStatus& status) {
+ const URLRequestStatus& status,
+ const std::string& security_info) {
if (download_handler_.get())
- return download_handler_->OnResponseCompleted(request_id, status);
+ return download_handler_->OnResponseCompleted(request_id, status,
+ security_info);
NOTREACHED();
return true;
}
diff --git a/chrome/browser/renderer_host/download_throttling_resource_handler.h b/chrome/browser/renderer_host/download_throttling_resource_handler.h
index 3306475..5a2eea9 100644
--- a/chrome/browser/renderer_host/download_throttling_resource_handler.h
+++ b/chrome/browser/renderer_host/download_throttling_resource_handler.h
@@ -46,7 +46,8 @@ class DownloadThrottlingResourceHandler
int min_size);
virtual bool OnReadCompleted(int request_id, int* bytes_read);
virtual bool OnResponseCompleted(int request_id,
- const URLRequestStatus& status);
+ const URLRequestStatus& status,
+ const std::string& security_info);
// DownloadRequestManager::Callback implementation:
void CancelDownload();
diff --git a/chrome/browser/renderer_host/resource_dispatcher_host.cc b/chrome/browser/renderer_host/resource_dispatcher_host.cc
index ba161e4..750fa33 100644
--- a/chrome/browser/renderer_host/resource_dispatcher_host.cc
+++ b/chrome/browser/renderer_host/resource_dispatcher_host.cc
@@ -205,7 +205,8 @@ bool ResourceDispatcherHost::HandleExternalProtocol(int request_id,
handler->OnResponseCompleted(request_id, URLRequestStatus(
URLRequestStatus::FAILED,
- net::ERR_ABORTED));
+ net::ERR_ABORTED),
+ std::string()); // No security info necessary.
return true;
}
@@ -224,7 +225,9 @@ void ResourceDispatcherHost::BeginRequest(
receiver->Send(new ViewMsg_Resource_RequestComplete(
render_view_id,
request_id,
- URLRequestStatus(URLRequestStatus::FAILED, net::ERR_ABORTED)));
+ URLRequestStatus(URLRequestStatus::FAILED, net::ERR_ABORTED),
+ std::string())); // No security info needed, connection was not
+ // established.
return;
}
@@ -919,7 +922,7 @@ void ResourceDispatcherHost::BeginRequestInternal(URLRequest* request,
if (memory_cost > max_outstanding_requests_cost_per_process_) {
// We call "CancelWithError()" as a way of setting the URLRequest's
// status -- it has no effect beyond this, since the request hasn't started.
- request->CancelWithError(net::ERR_INSUFFICIENT_RESOURCES);
+ request->SimulateError(net::ERR_INSUFFICIENT_RESOURCES);
// TODO(eroman): this is kinda funky -- we insert the unstarted request into
// |pending_requests_| simply to please OnResponseCompleted().
@@ -1121,8 +1124,19 @@ void ResourceDispatcherHost::OnResponseCompleted(URLRequest* request) {
RESOURCE_LOG("OnResponseCompleted: " << request->url().spec());
ExtraRequestInfo* info = ExtraInfoForRequest(request);
+ std::string security_info;
+ const net::SSLInfo& ssl_info = request->ssl_info();
+ if (ssl_info.cert != NULL) {
+ int cert_id = CertStore::GetSharedInstance()->
+ StoreCert(ssl_info.cert, info->render_process_host_id);
+ security_info = SSLManager::SerializeSecurityInfo(cert_id,
+ ssl_info.cert_status,
+ ssl_info.security_bits);
+ }
+
if (info->resource_handler->OnResponseCompleted(info->request_id,
- request->status())) {
+ request->status(),
+ security_info)) {
NotifyResponseCompleted(request, info->render_process_host_id);
// The request is complete so we can remove it.
diff --git a/chrome/browser/renderer_host/resource_handler.h b/chrome/browser/renderer_host/resource_handler.h
index 01abcb5..2b843f9 100644
--- a/chrome/browser/renderer_host/resource_handler.h
+++ b/chrome/browser/renderer_host/resource_handler.h
@@ -12,6 +12,8 @@
#ifndef CHROME_BROWSER_RENDERER_HOST_RESOURCE_HANDLER_H_
#define CHROME_BROWSER_RENDERER_HOST_RESOURCE_HANDLER_H_
+#include <string>
+
#include "chrome/common/filter_policy.h"
#include "net/url_request/url_request_status.h"
#include "webkit/glue/resource_loader_bridge.h"
@@ -83,7 +85,8 @@ class ResourceHandler : public base::RefCounted<ResourceHandler> {
// The response is complete. The final response status is given.
// Returns false if the handler is deferring the call to a later time.
virtual bool OnResponseCompleted(int request_id,
- const URLRequestStatus& status) = 0;
+ const URLRequestStatus& status,
+ const std::string& security_info) = 0;
};
#endif // CHROME_BROWSER_RENDERER_HOST_RESOURCE_HANDLER_H_
diff --git a/chrome/browser/renderer_host/safe_browsing_resource_handler.cc b/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
index 7ee4661..0d0d058 100644
--- a/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
+++ b/chrome/browser/renderer_host/safe_browsing_resource_handler.cc
@@ -101,7 +101,8 @@ bool SafeBrowsingResourceHandler::OnReadCompleted(int request_id,
}
bool SafeBrowsingResourceHandler::OnResponseCompleted(
- int request_id, const URLRequestStatus& status) {
+ int request_id, const URLRequestStatus& status,
+ const std::string& security_info) {
if ((in_safe_browsing_check_ ||
safe_browsing_result_ != SafeBrowsingService::URL_SAFE) &&
status.status() == URLRequestStatus::FAILED &&
@@ -111,10 +112,11 @@ bool SafeBrowsingResourceHandler::OnResponseCompleted(
// page.
queued_error_.reset(new URLRequestStatus(status));
queued_error_request_id_ = request_id;
+ queued_security_info_ = security_info;
return true;
}
- return next_handler_->OnResponseCompleted(request_id, status);
+ return next_handler_->OnResponseCompleted(request_id, status, security_info);
}
// SafeBrowsingService::Client implementation, called on the IO thread once
@@ -140,8 +142,10 @@ void SafeBrowsingResourceHandler::OnUrlCheckResult(
if (queued_error_.get()) {
next_handler_->OnResponseCompleted(
- queued_error_request_id_, *queued_error_.get());
+ queued_error_request_id_, *queued_error_.get(),
+ queued_security_info_);
queued_error_.reset();
+ queued_security_info_.clear();
}
Release();
@@ -168,8 +172,10 @@ void SafeBrowsingResourceHandler::OnBlockingPageComplete(bool proceed) {
if (queued_error_.get()) {
next_handler_->OnResponseCompleted(
- queued_error_request_id_, *queued_error_.get());
+ queued_error_request_id_, *queued_error_.get(),
+ queued_security_info_);
queued_error_.reset();
+ queued_security_info_.clear();
}
} else {
rdh_->CancelRequest(render_process_host_id_, paused_request_id_, false);
diff --git a/chrome/browser/renderer_host/safe_browsing_resource_handler.h b/chrome/browser/renderer_host/safe_browsing_resource_handler.h
index 92e0040..a3c74ba 100644
--- a/chrome/browser/renderer_host/safe_browsing_resource_handler.h
+++ b/chrome/browser/renderer_host/safe_browsing_resource_handler.h
@@ -5,6 +5,8 @@
#ifndef CHROME_BROWSER_RENDERER_HOST_SAFE_BROWSING_RESOURCE_HANDLER_H_
#define CHROME_BROWSER_RENDERER_HOST_SAFE_BROWSING_RESOURCE_HANDLER_H_
+#include <string>
+
#include "base/time.h"
#include "chrome/browser/renderer_host/resource_handler.h"
#include "chrome/browser/safe_browsing/safe_browsing_service.h"
@@ -31,7 +33,9 @@ class SafeBrowsingResourceHandler : public ResourceHandler,
bool OnWillRead(int request_id, net::IOBuffer** buf, int* buf_size,
int min_size);
bool OnReadCompleted(int request_id, int* bytes_read);
- bool OnResponseCompleted(int request_id, const URLRequestStatus& status);
+ bool OnResponseCompleted(int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info);
// SafeBrowsingService::Client implementation, called on the IO thread once
// the URL has been classified.
@@ -52,6 +56,7 @@ class SafeBrowsingResourceHandler : public ResourceHandler,
SafeBrowsingService::UrlCheckResult safe_browsing_result_;
scoped_refptr<SafeBrowsingService> safe_browsing_;
scoped_ptr<URLRequestStatus> queued_error_;
+ std::string queued_security_info_;
int queued_error_request_id_;
ResourceDispatcherHost* rdh_;
base::Time pause_time_;
diff --git a/chrome/browser/renderer_host/save_file_resource_handler.cc b/chrome/browser/renderer_host/save_file_resource_handler.cc
index c4db4a2..2f469f1 100644
--- a/chrome/browser/renderer_host/save_file_resource_handler.cc
+++ b/chrome/browser/renderer_host/save_file_resource_handler.cc
@@ -74,7 +74,8 @@ bool SaveFileResourceHandler::OnReadCompleted(int request_id, int* bytes_read) {
bool SaveFileResourceHandler::OnResponseCompleted(
int request_id,
- const URLRequestStatus& status) {
+ const URLRequestStatus& status,
+ const std::string& security_info) {
save_manager_->GetSaveLoop()->PostTask(FROM_HERE,
NewRunnableMethod(save_manager_,
&SaveFileManager::SaveFinished,
diff --git a/chrome/browser/renderer_host/save_file_resource_handler.h b/chrome/browser/renderer_host/save_file_resource_handler.h
index 03f4a02..bc3548c 100644
--- a/chrome/browser/renderer_host/save_file_resource_handler.h
+++ b/chrome/browser/renderer_host/save_file_resource_handler.h
@@ -34,7 +34,9 @@ class SaveFileResourceHandler : public ResourceHandler {
// Passes the buffer to the download file writer.
bool OnReadCompleted(int request_id, int* bytes_read);
- bool OnResponseCompleted(int request_id, const URLRequestStatus& status);
+ bool OnResponseCompleted(int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info);
// If the content-length header is not present (or contains something other
// than numbers), StringToInt64 returns 0, which indicates 'unknown size' and
diff --git a/chrome/browser/renderer_host/sync_resource_handler.cc b/chrome/browser/renderer_host/sync_resource_handler.cc
index cc74b2d..5be45a9 100644
--- a/chrome/browser/renderer_host/sync_resource_handler.cc
+++ b/chrome/browser/renderer_host/sync_resource_handler.cc
@@ -54,8 +54,10 @@ bool SyncResourceHandler::OnReadCompleted(int request_id, int* bytes_read) {
return true;
}
-bool SyncResourceHandler::OnResponseCompleted(int request_id,
- const URLRequestStatus& status) {
+bool SyncResourceHandler::OnResponseCompleted(
+ int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info) {
result_.status = status;
ViewHostMsg_SyncLoad::WriteReplyParams(result_message_, result_);
diff --git a/chrome/browser/renderer_host/sync_resource_handler.h b/chrome/browser/renderer_host/sync_resource_handler.h
index deb7746..8aa4681 100644
--- a/chrome/browser/renderer_host/sync_resource_handler.h
+++ b/chrome/browser/renderer_host/sync_resource_handler.h
@@ -5,6 +5,8 @@
#ifndef CHROME_BROWSER_RENDERER_HOST_SYNC_RESOURCE_HANDLER_H_
#define CHROME_BROWSER_RENDERER_HOST_SYNC_RESOURCE_HANDLER_H_
+#include <string>
+
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "chrome/browser/renderer_host/resource_handler.h"
#include "net/base/io_buffer.h"
@@ -23,7 +25,9 @@ class SyncResourceHandler : public ResourceHandler {
bool OnWillRead(int request_id, net::IOBuffer** buf, int* buf_size,
int min_size);
bool OnReadCompleted(int request_id, int* bytes_read);
- bool OnResponseCompleted(int request_id, const URLRequestStatus& status);
+ bool OnResponseCompleted(int request_id,
+ const URLRequestStatus& status,
+ const std::string& security_info);
private:
enum { kReadBufSize = 3840 };