summaryrefslogtreecommitdiffstats
path: root/chrome/common/resource_dispatcher.cc
diff options
context:
space:
mode:
authortonyg@chromium.org <tonyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-18 17:09:33 +0000
committertonyg@chromium.org <tonyg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-05-18 17:09:33 +0000
commitb808eb6f0f47a7c4ad15dd8ec115404ce14b47b6 (patch)
tree8315454562119f7591028e5f13bb528abb1dc9ef /chrome/common/resource_dispatcher.cc
parentcadf9b3f3fc8844f95b467afd40a2abf3cd615f9 (diff)
downloadchromium_src-b808eb6f0f47a7c4ad15dd8ec115404ce14b47b6.zip
chromium_src-b808eb6f0f47a7c4ad15dd8ec115404ce14b47b6.tar.gz
chromium_src-b808eb6f0f47a7c4ad15dd8ec115404ce14b47b6.tar.bz2
Wire sending/receiving cacheable metadata from the renderer
to the disk cache. BUG=32407 TEST=None Review URL: http://codereview.chromium.org/1698001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47522 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/resource_dispatcher.cc')
-rw-r--r--chrome/common/resource_dispatcher.cc21
1 files changed, 21 insertions, 0 deletions
diff --git a/chrome/common/resource_dispatcher.cc b/chrome/common/resource_dispatcher.cc
index b0d2918..b8f306c 100644
--- a/chrome/common/resource_dispatcher.cc
+++ b/chrome/common/resource_dispatcher.cc
@@ -367,6 +367,24 @@ void ResourceDispatcher::OnReceivedResponse(
peer->OnReceivedResponse(response_head, false);
}
+void ResourceDispatcher::OnReceivedCachedMetadata(
+ int request_id, const std::vector<char>& data) {
+ PendingRequestList::iterator it = pending_requests_.find(request_id);
+ if (it == pending_requests_.end()) {
+ // this might happen for kill()ed requests on the webkit end, so perhaps
+ // it shouldn't be a warning...
+ DLOG(WARNING) << "Got metadata for a nonexistant or finished request";
+ return;
+ }
+
+ if (data.size()) {
+ PendingRequestInfo& request_info = it->second;
+ RESOURCE_LOG("Dispatching " << data.size() << " metadata bytes for " <<
+ request_info.peer->GetURLForDebugging().possibly_invalid_spec());
+ request_info.peer->OnReceivedCachedMetadata(&data.front(), data.size());
+ }
+}
+
void ResourceDispatcher::OnReceivedData(const IPC::Message& message,
int request_id,
base::SharedMemoryHandle shm_handle,
@@ -528,6 +546,8 @@ void ResourceDispatcher::DispatchMessage(const IPC::Message& message) {
IPC_BEGIN_MESSAGE_MAP(ResourceDispatcher, message)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_UploadProgress, OnUploadProgress)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_ReceivedResponse, OnReceivedResponse)
+ IPC_MESSAGE_HANDLER(
+ ViewMsg_Resource_ReceivedCachedMetadata, OnReceivedCachedMetadata)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_ReceivedRedirect, OnReceivedRedirect)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_DataReceived, OnReceivedData)
IPC_MESSAGE_HANDLER(ViewMsg_Resource_RequestComplete, OnRequestComplete)
@@ -579,6 +599,7 @@ bool ResourceDispatcher::IsResourceDispatcherMessage(
switch (message.type()) {
case ViewMsg_Resource_UploadProgress::ID:
case ViewMsg_Resource_ReceivedResponse::ID:
+ case ViewMsg_Resource_ReceivedCachedMetadata::ID:
case ViewMsg_Resource_ReceivedRedirect::ID:
case ViewMsg_Resource_DataReceived::ID:
case ViewMsg_Resource_RequestComplete::ID: