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

Unified Diff: chrome/browser/appcache/appcache_dispatcher_host.h

Issue 5625003: Make the AppCacheDispatcherHost be a MessageFilter so that ResourceMessageFil... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: fix dependency issue in AppCacheDispatcherHost Created 10 years 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/appcache/appcache_dispatcher_host.h
===================================================================
--- chrome/browser/appcache/appcache_dispatcher_host.h (revision 68122)
+++ chrome/browser/appcache/appcache_dispatcher_host.h (working copy)
@@ -12,6 +12,7 @@
#include "base/ref_counted.h"
#include "base/scoped_ptr.h"
#include "chrome/browser/appcache/appcache_frontend_proxy.h"
+#include "chrome/browser/browser_io_message_filter.h"
#include "chrome/browser/renderer_host/resource_dispatcher_host.h"
#include "ipc/ipc_message.h"
#include "webkit/appcache/appcache_backend_impl.h"
@@ -24,30 +25,24 @@
// its child processes. There is a distinct host for each child process.
// Messages are handled on the IO thread. The ResourceMessageFilter and
// WorkerProcessHost create an instance and delegates calls to it.
-class AppCacheDispatcherHost {
+class AppCacheDispatcherHost : public BrowserIOMessageFilter {
public:
// Constructor for use on the IO thread.
- explicit AppCacheDispatcherHost(
- URLRequestContext* request_context);
+ AppCacheDispatcherHost(URLRequestContext* request_context,
+ int process_id);
// Constructor for use on the UI thread.
- explicit AppCacheDispatcherHost(
- URLRequestContextGetter* request_context_getter);
+ AppCacheDispatcherHost(URLRequestContextGetter* request_context_getter,
+ int process_id);
~AppCacheDispatcherHost();
- void Initialize(ResourceDispatcherHost::Receiver* receiver);
- bool OnMessageReceived(const IPC::Message& msg, bool* msg_is_ok);
+ // BrowserIOMessageFilter implementation
+ virtual bool OnMessageReceived(const IPC::Message& message);
+ virtual void OnChannelConnected(int32 peer_pid);
- int process_id() const { return backend_impl_.process_id(); }
-
- // Note: needed to satisfy ipc message dispatching macros.
- bool Send(IPC::Message* msg) {
- return frontend_proxy_.sender()->Send(msg);
- }
-
private:
- // Ipc message handlers
+ // IPC message handlers
void OnRegisterHost(int host_id);
void OnUnregisterHost(int host_id);
void OnSelectCache(int host_id, const GURL& document_url,
@@ -68,25 +63,26 @@
void StartUpdateCallback(bool result, void* param);
void SwapCacheCallback(bool result, void* param);
- void ReceivedBadMessage(uint32 msg_type);
+ // This is only valid once Initialize() has been called. This MUST be defined
+ // before backend_impl_ since the latter maintains a (non-refcounted) pointer
+ // to it.
+ scoped_refptr<ChromeAppCacheService> appcache_service_;
AppCacheFrontendProxy frontend_proxy_;
appcache::AppCacheBackendImpl backend_impl_;
- // Temporary until Initialize() can be called from the IO thread,
+ // Temporary until OnChannelConnected() can be called from the IO thread,
// which will extract the AppCacheService from the URLRequestContext.
scoped_refptr<URLRequestContext> request_context_;
scoped_refptr<URLRequestContextGetter> request_context_getter_;
- // This is only valid once Initialize() has been called.
- scoped_refptr<ChromeAppCacheService> appcache_service_;
-
scoped_ptr<appcache::GetStatusCallback> get_status_callback_;
scoped_ptr<appcache::StartUpdateCallback> start_update_callback_;
scoped_ptr<appcache::SwapCacheCallback> swap_cache_callback_;
scoped_ptr<IPC::Message> pending_reply_msg_;
- ResourceDispatcherHost::Receiver* receiver_;
+ // The corresponding ChildProcessHost object's id().
+ int process_id_;
DISALLOW_COPY_AND_ASSIGN(AppCacheDispatcherHost);
};

Powered by Google App Engine
This is Rietveld 408576698