Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(442)

Side by Side Diff: chrome/common/resource_dispatcher.cc

Issue 1698001: Receive cacheable metadata from the renderer and... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/common/resource_dispatcher.h ('k') | chrome/renderer/renderer_webkitclient_impl.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading 5 // See http://dev.chromium.org/developers/design-documents/multi-process-resourc e-loading
6 6
7 #include "chrome/common/resource_dispatcher.h" 7 #include "chrome/common/resource_dispatcher.h"
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 349 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 if (new_peer) { 360 if (new_peer) {
361 request_info.peer = new_peer; 361 request_info.peer = new_peer;
362 peer = new_peer; 362 peer = new_peer;
363 } 363 }
364 364
365 RESOURCE_LOG("Dispatching response for " << 365 RESOURCE_LOG("Dispatching response for " <<
366 peer->GetURLForDebugging().possibly_invalid_spec()); 366 peer->GetURLForDebugging().possibly_invalid_spec());
367 peer->OnReceivedResponse(response_head, false); 367 peer->OnReceivedResponse(response_head, false);
368 } 368 }
369 369
370 void ResourceDispatcher::OnReceivedCachedMetadata(
371 int request_id, const std::vector<char>& data) {
372 PendingRequestList::iterator it = pending_requests_.find(request_id);
373 if (it == pending_requests_.end()) {
374 // this might happen for kill()ed requests on the webkit end, so perhaps
375 // it shouldn't be a warning...
376 DLOG(WARNING) << "Got metadata for a nonexistant or finished request";
377 return;
378 }
379
380 if (data.size()) {
381 PendingRequestInfo& request_info = it->second;
382 RESOURCE_LOG("Dispatching " << data.size() << " metadata bytes for " <<
383 request_info.peer->GetURLForDebugging().possibly_invalid_spec());
384 request_info.peer->OnReceivedCachedMetadata(&data.front(), data.size());
385 }
386 }
387
370 void ResourceDispatcher::OnReceivedData(const IPC::Message& message, 388 void ResourceDispatcher::OnReceivedData(const IPC::Message& message,
371 int request_id, 389 int request_id,
372 base::SharedMemoryHandle shm_handle, 390 base::SharedMemoryHandle shm_handle,
373 int data_len) { 391 int data_len) {
374 // Acknowledge the reception of this data. 392 // Acknowledge the reception of this data.
375 message_sender()->Send( 393 message_sender()->Send(
376 new ViewHostMsg_DataReceived_ACK(message.routing_id(), request_id)); 394 new ViewHostMsg_DataReceived_ACK(message.routing_id(), request_id));
377 395
378 const bool shm_valid = base::SharedMemory::IsHandleValid(shm_handle); 396 const bool shm_valid = base::SharedMemory::IsHandleValid(shm_handle);
379 DCHECK((shm_valid && data_len > 0) || (!shm_valid && !data_len)); 397 DCHECK((shm_valid && data_len > 0) || (!shm_valid && !data_len));
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
521 MessageLoop::current()->PostTask(FROM_HERE, 539 MessageLoop::current()->PostTask(FROM_HERE,
522 method_factory_.NewRunnableMethod( 540 method_factory_.NewRunnableMethod(
523 &ResourceDispatcher::FlushDeferredMessages, request_id)); 541 &ResourceDispatcher::FlushDeferredMessages, request_id));
524 } 542 }
525 } 543 }
526 544
527 void ResourceDispatcher::DispatchMessage(const IPC::Message& message) { 545 void ResourceDispatcher::DispatchMessage(const IPC::Message& message) {
528 IPC_BEGIN_MESSAGE_MAP(ResourceDispatcher, message) 546 IPC_BEGIN_MESSAGE_MAP(ResourceDispatcher, message)
529 IPC_MESSAGE_HANDLER(ViewMsg_Resource_UploadProgress, OnUploadProgress) 547 IPC_MESSAGE_HANDLER(ViewMsg_Resource_UploadProgress, OnUploadProgress)
530 IPC_MESSAGE_HANDLER(ViewMsg_Resource_ReceivedResponse, OnReceivedResponse) 548 IPC_MESSAGE_HANDLER(ViewMsg_Resource_ReceivedResponse, OnReceivedResponse)
549 IPC_MESSAGE_HANDLER(
550 ViewMsg_Resource_ReceivedCachedMetadata, OnReceivedCachedMetadata)
531 IPC_MESSAGE_HANDLER(ViewMsg_Resource_ReceivedRedirect, OnReceivedRedirect) 551 IPC_MESSAGE_HANDLER(ViewMsg_Resource_ReceivedRedirect, OnReceivedRedirect)
532 IPC_MESSAGE_HANDLER(ViewMsg_Resource_DataReceived, OnReceivedData) 552 IPC_MESSAGE_HANDLER(ViewMsg_Resource_DataReceived, OnReceivedData)
533 IPC_MESSAGE_HANDLER(ViewMsg_Resource_RequestComplete, OnRequestComplete) 553 IPC_MESSAGE_HANDLER(ViewMsg_Resource_RequestComplete, OnRequestComplete)
534 IPC_END_MESSAGE_MAP() 554 IPC_END_MESSAGE_MAP()
535 } 555 }
536 556
537 void ResourceDispatcher::FlushDeferredMessages(int request_id) { 557 void ResourceDispatcher::FlushDeferredMessages(int request_id) {
538 PendingRequestList::iterator it = pending_requests_.find(request_id); 558 PendingRequestList::iterator it = pending_requests_.find(request_id);
539 if (it == pending_requests_.end()) // The request could have become invalid. 559 if (it == pending_requests_.end()) // The request could have become invalid.
540 return; 560 return;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 return new webkit_glue::IPCResourceLoaderBridge(this, request_info, 592 return new webkit_glue::IPCResourceLoaderBridge(this, request_info,
573 host_renderer_id, 593 host_renderer_id,
574 host_render_view_id); 594 host_render_view_id);
575 } 595 }
576 596
577 bool ResourceDispatcher::IsResourceDispatcherMessage( 597 bool ResourceDispatcher::IsResourceDispatcherMessage(
578 const IPC::Message& message) { 598 const IPC::Message& message) {
579 switch (message.type()) { 599 switch (message.type()) {
580 case ViewMsg_Resource_UploadProgress::ID: 600 case ViewMsg_Resource_UploadProgress::ID:
581 case ViewMsg_Resource_ReceivedResponse::ID: 601 case ViewMsg_Resource_ReceivedResponse::ID:
602 case ViewMsg_Resource_ReceivedCachedMetadata::ID:
582 case ViewMsg_Resource_ReceivedRedirect::ID: 603 case ViewMsg_Resource_ReceivedRedirect::ID:
583 case ViewMsg_Resource_DataReceived::ID: 604 case ViewMsg_Resource_DataReceived::ID:
584 case ViewMsg_Resource_RequestComplete::ID: 605 case ViewMsg_Resource_RequestComplete::ID:
585 return true; 606 return true;
586 607
587 default: 608 default:
588 break; 609 break;
589 } 610 }
590 611
591 return false; 612 return false;
(...skipping 23 matching lines...) Expand all
615 636
616 // static 637 // static
617 void ResourceDispatcher::ReleaseResourcesInMessageQueue(MessageQueue* queue) { 638 void ResourceDispatcher::ReleaseResourcesInMessageQueue(MessageQueue* queue) {
618 while (!queue->empty()) { 639 while (!queue->empty()) {
619 IPC::Message* message = queue->front(); 640 IPC::Message* message = queue->front();
620 ReleaseResourcesInDataMessage(*message); 641 ReleaseResourcesInDataMessage(*message);
621 queue->pop_front(); 642 queue->pop_front();
622 delete message; 643 delete message;
623 } 644 }
624 } 645 }
OLDNEW
« no previous file with comments | « chrome/common/resource_dispatcher.h ('k') | chrome/renderer/renderer_webkitclient_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698