| Index: chrome/browser/appcache/appcache_dispatcher_host.cc
|
| ===================================================================
|
| --- chrome/browser/appcache/appcache_dispatcher_host.cc (revision 68122)
|
| +++ chrome/browser/appcache/appcache_dispatcher_host.cc (working copy)
|
| @@ -11,28 +11,30 @@
|
| #include "chrome/common/render_messages.h"
|
|
|
| AppCacheDispatcherHost::AppCacheDispatcherHost(
|
| - URLRequestContext* request_context)
|
| - : request_context_(request_context),
|
| - receiver_(NULL) {
|
| + URLRequestContext* request_context,
|
| + int process_id)
|
| + : ALLOW_THIS_IN_INITIALIZER_LIST(frontend_proxy_(this)),
|
| + request_context_(request_context),
|
| + process_id_(process_id) {
|
| DCHECK(request_context_.get());
|
| }
|
|
|
| AppCacheDispatcherHost::AppCacheDispatcherHost(
|
| - URLRequestContextGetter* request_context_getter)
|
| - : request_context_getter_(request_context_getter),
|
| - receiver_(NULL) {
|
| + URLRequestContextGetter* request_context_getter,
|
| + int process_id)
|
| + : ALLOW_THIS_IN_INITIALIZER_LIST(frontend_proxy_(this)),
|
| + request_context_getter_(request_context_getter),
|
| + process_id_(process_id) {
|
| DCHECK(request_context_getter_.get());
|
| }
|
|
|
| AppCacheDispatcherHost::~AppCacheDispatcherHost() {}
|
|
|
| -void AppCacheDispatcherHost::Initialize(
|
| - ResourceDispatcherHost::Receiver* receiver) {
|
| - DCHECK(receiver && !receiver_);
|
| +void AppCacheDispatcherHost::OnChannelConnected(int32 peer_pid) {
|
| + BrowserIOMessageFilter::OnChannelConnected(peer_pid);
|
| +
|
| DCHECK(request_context_.get() || request_context_getter_.get());
|
|
|
| - receiver_ = receiver;
|
| -
|
| // Get the AppCacheService (it can only be accessed from IO thread).
|
| URLRequestContext* context = request_context_.get();
|
| if (!context)
|
| @@ -42,10 +44,9 @@
|
| request_context_ = NULL;
|
| request_context_getter_ = NULL;
|
|
|
| - frontend_proxy_.set_sender(receiver);
|
| if (appcache_service_.get()) {
|
| backend_impl_.Initialize(
|
| - appcache_service_.get(), &frontend_proxy_, receiver->id());
|
| + appcache_service_.get(), &frontend_proxy_, process_id_);
|
| get_status_callback_.reset(
|
| NewCallback(this, &AppCacheDispatcherHost::GetStatusCallback));
|
| start_update_callback_.reset(
|
| @@ -55,12 +56,11 @@
|
| }
|
| }
|
|
|
| -bool AppCacheDispatcherHost::OnMessageReceived(const IPC::Message& msg,
|
| - bool *msg_ok) {
|
| - DCHECK(receiver_);
|
| - *msg_ok = true;
|
| +bool AppCacheDispatcherHost::OnMessageReceived(const IPC::Message& message) {
|
| bool handled = true;
|
| - IPC_BEGIN_MESSAGE_MAP_EX(AppCacheDispatcherHost, msg, *msg_ok)
|
| + bool message_was_ok = true;
|
| +
|
| + IPC_BEGIN_MESSAGE_MAP_EX(AppCacheDispatcherHost, message, message_was_ok)
|
| IPC_MESSAGE_HANDLER(AppCacheMsg_RegisterHost, OnRegisterHost);
|
| IPC_MESSAGE_HANDLER(AppCacheMsg_UnregisterHost, OnUnregisterHost);
|
| IPC_MESSAGE_HANDLER(AppCacheMsg_GetResourceList, OnGetResourceList);
|
| @@ -75,13 +75,17 @@
|
| IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheMsg_SwapCache, OnSwapCache);
|
| IPC_MESSAGE_UNHANDLED(handled = false)
|
| IPC_END_MESSAGE_MAP_EX()
|
| +
|
| + if (!message_was_ok)
|
| + BadMessageReceived(message.type());
|
| +
|
| return handled;
|
| }
|
|
|
| void AppCacheDispatcherHost::OnRegisterHost(int host_id) {
|
| if (appcache_service_.get()) {
|
| if (!backend_impl_.RegisterHost(host_id)) {
|
| - ReceivedBadMessage(AppCacheMsg_RegisterHost::ID);
|
| + BadMessageReceived(AppCacheMsg_RegisterHost::ID);
|
| }
|
| }
|
| }
|
| @@ -89,7 +93,7 @@
|
| void AppCacheDispatcherHost::OnUnregisterHost(int host_id) {
|
| if (appcache_service_.get()) {
|
| if (!backend_impl_.UnregisterHost(host_id)) {
|
| - ReceivedBadMessage(AppCacheMsg_UnregisterHost::ID);
|
| + BadMessageReceived(AppCacheMsg_UnregisterHost::ID);
|
| }
|
| }
|
| }
|
| @@ -102,7 +106,7 @@
|
| if (!backend_impl_.SelectCache(host_id, document_url,
|
| cache_document_was_loaded_from,
|
| opt_manifest_url)) {
|
| - ReceivedBadMessage(AppCacheMsg_SelectCache::ID);
|
| + BadMessageReceived(AppCacheMsg_SelectCache::ID);
|
| }
|
| } else {
|
| frontend_proxy_.OnCacheSelected(host_id, appcache::AppCacheInfo());
|
| @@ -114,7 +118,7 @@
|
| if (appcache_service_.get()) {
|
| if (!backend_impl_.SelectCacheForWorker(
|
| host_id, parent_process_id, parent_host_id)) {
|
| - ReceivedBadMessage(AppCacheMsg_SelectCacheForWorker::ID);
|
| + BadMessageReceived(AppCacheMsg_SelectCacheForWorker::ID);
|
| }
|
| } else {
|
| frontend_proxy_.OnCacheSelected(host_id, appcache::AppCacheInfo());
|
| @@ -125,7 +129,7 @@
|
| int host_id, int64 appcache_id) {
|
| if (appcache_service_.get()) {
|
| if (!backend_impl_.SelectCacheForSharedWorker(host_id, appcache_id))
|
| - ReceivedBadMessage(AppCacheMsg_SelectCacheForSharedWorker::ID);
|
| + BadMessageReceived(AppCacheMsg_SelectCacheForSharedWorker::ID);
|
| } else {
|
| frontend_proxy_.OnCacheSelected(host_id, appcache::AppCacheInfo());
|
| }
|
| @@ -137,7 +141,7 @@
|
| if (appcache_service_.get()) {
|
| if (!backend_impl_.MarkAsForeignEntry(host_id, document_url,
|
| cache_document_was_loaded_from)) {
|
| - ReceivedBadMessage(AppCacheMsg_MarkAsForeignEntry::ID);
|
| + BadMessageReceived(AppCacheMsg_MarkAsForeignEntry::ID);
|
| }
|
| }
|
| }
|
| @@ -151,7 +155,7 @@
|
| void AppCacheDispatcherHost::OnGetStatus(int host_id,
|
| IPC::Message* reply_msg) {
|
| if (pending_reply_msg_.get()) {
|
| - ReceivedBadMessage(AppCacheMsg_GetStatus::ID);
|
| + BadMessageReceived(AppCacheMsg_GetStatus::ID);
|
| delete reply_msg;
|
| return;
|
| }
|
| @@ -160,7 +164,7 @@
|
| if (appcache_service_.get()) {
|
| if (!backend_impl_.GetStatusWithCallback(
|
| host_id, get_status_callback_.get(), reply_msg)) {
|
| - ReceivedBadMessage(AppCacheMsg_GetStatus::ID);
|
| + BadMessageReceived(AppCacheMsg_GetStatus::ID);
|
| }
|
| return;
|
| }
|
| @@ -171,7 +175,7 @@
|
| void AppCacheDispatcherHost::OnStartUpdate(int host_id,
|
| IPC::Message* reply_msg) {
|
| if (pending_reply_msg_.get()) {
|
| - ReceivedBadMessage(AppCacheMsg_StartUpdate::ID);
|
| + BadMessageReceived(AppCacheMsg_StartUpdate::ID);
|
| delete reply_msg;
|
| return;
|
| }
|
| @@ -180,7 +184,7 @@
|
| if (appcache_service_.get()) {
|
| if (!backend_impl_.StartUpdateWithCallback(
|
| host_id, start_update_callback_.get(), reply_msg)) {
|
| - ReceivedBadMessage(AppCacheMsg_StartUpdate::ID);
|
| + BadMessageReceived(AppCacheMsg_StartUpdate::ID);
|
| }
|
| return;
|
| }
|
| @@ -191,7 +195,7 @@
|
| void AppCacheDispatcherHost::OnSwapCache(int host_id,
|
| IPC::Message* reply_msg) {
|
| if (pending_reply_msg_.get()) {
|
| - ReceivedBadMessage(AppCacheMsg_SwapCache::ID);
|
| + BadMessageReceived(AppCacheMsg_SwapCache::ID);
|
| delete reply_msg;
|
| return;
|
| }
|
| @@ -200,7 +204,7 @@
|
| if (appcache_service_.get()) {
|
| if (!backend_impl_.SwapCacheWithCallback(
|
| host_id, swap_cache_callback_.get(), reply_msg)) {
|
| - ReceivedBadMessage(AppCacheMsg_SwapCache::ID);
|
| + BadMessageReceived(AppCacheMsg_SwapCache::ID);
|
| }
|
| return;
|
| }
|
| @@ -213,26 +217,19 @@
|
| IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param);
|
| DCHECK(reply_msg == pending_reply_msg_.get());
|
| AppCacheMsg_GetStatus::WriteReplyParams(reply_msg, status);
|
| - frontend_proxy_.sender()->Send(pending_reply_msg_.release());
|
| + Send(pending_reply_msg_.release());
|
| }
|
|
|
| void AppCacheDispatcherHost::StartUpdateCallback(bool result, void* param) {
|
| IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param);
|
| DCHECK(reply_msg == pending_reply_msg_.get());
|
| AppCacheMsg_StartUpdate::WriteReplyParams(reply_msg, result);
|
| - frontend_proxy_.sender()->Send(pending_reply_msg_.release());
|
| + Send(pending_reply_msg_.release());
|
| }
|
|
|
| void AppCacheDispatcherHost::SwapCacheCallback(bool result, void* param) {
|
| IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param);
|
| DCHECK(reply_msg == pending_reply_msg_.get());
|
| AppCacheMsg_SwapCache::WriteReplyParams(reply_msg, result);
|
| - frontend_proxy_.sender()->Send(pending_reply_msg_.release());
|
| + Send(pending_reply_msg_.release());
|
| }
|
| -
|
| -void AppCacheDispatcherHost::ReceivedBadMessage(uint32 msg_type) {
|
| - // TODO(michaeln): Consider gathering UMA stats
|
| - // http://code.google.com/p/chromium/issues/detail?id=24634
|
| - BrowserRenderProcessHost::BadMessageTerminateProcess(
|
| - msg_type, receiver_->handle());
|
| -}
|
|
|