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

Side by Side Diff: chrome/browser/appcache/appcache_dispatcher_host.cc

Issue 5541005: Make BrowserMessageFilter support dispatching messages on different threads. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #include "chrome/browser/appcache/appcache_dispatcher_host.h" 5 #include "chrome/browser/appcache/appcache_dispatcher_host.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "chrome/browser/appcache/chrome_appcache_service.h" 8 #include "chrome/browser/appcache/chrome_appcache_service.h"
9 #include "chrome/browser/renderer_host/browser_render_process_host.h" 9 #include "chrome/browser/renderer_host/browser_render_process_host.h"
10 #include "chrome/browser/net/chrome_url_request_context.h" 10 #include "chrome/browser/net/chrome_url_request_context.h"
(...skipping 13 matching lines...) Expand all
24 int process_id) 24 int process_id)
25 : ALLOW_THIS_IN_INITIALIZER_LIST(frontend_proxy_(this)), 25 : ALLOW_THIS_IN_INITIALIZER_LIST(frontend_proxy_(this)),
26 request_context_getter_(request_context_getter), 26 request_context_getter_(request_context_getter),
27 process_id_(process_id) { 27 process_id_(process_id) {
28 DCHECK(request_context_getter_.get()); 28 DCHECK(request_context_getter_.get());
29 } 29 }
30 30
31 AppCacheDispatcherHost::~AppCacheDispatcherHost() {} 31 AppCacheDispatcherHost::~AppCacheDispatcherHost() {}
32 32
33 void AppCacheDispatcherHost::OnChannelConnected(int32 peer_pid) { 33 void AppCacheDispatcherHost::OnChannelConnected(int32 peer_pid) {
34 BrowserIOMessageFilter::OnChannelConnected(peer_pid); 34 BrowserMessageFilter::OnChannelConnected(peer_pid);
35 35
36 DCHECK(request_context_.get() || request_context_getter_.get()); 36 DCHECK(request_context_.get() || request_context_getter_.get());
37 37
38 // Get the AppCacheService (it can only be accessed from IO thread). 38 // Get the AppCacheService (it can only be accessed from IO thread).
39 URLRequestContext* context = request_context_.get(); 39 URLRequestContext* context = request_context_.get();
40 if (!context) 40 if (!context)
41 context = request_context_getter_->GetURLRequestContext(); 41 context = request_context_getter_->GetURLRequestContext();
42 appcache_service_ = 42 appcache_service_ =
43 static_cast<ChromeURLRequestContext*>(context)->appcache_service(); 43 static_cast<ChromeURLRequestContext*>(context)->appcache_service();
44 request_context_ = NULL; 44 request_context_ = NULL;
45 request_context_getter_ = NULL; 45 request_context_getter_ = NULL;
46 46
47 if (appcache_service_.get()) { 47 if (appcache_service_.get()) {
48 backend_impl_.Initialize( 48 backend_impl_.Initialize(
49 appcache_service_.get(), &frontend_proxy_, process_id_); 49 appcache_service_.get(), &frontend_proxy_, process_id_);
50 get_status_callback_.reset( 50 get_status_callback_.reset(
51 NewCallback(this, &AppCacheDispatcherHost::GetStatusCallback)); 51 NewCallback(this, &AppCacheDispatcherHost::GetStatusCallback));
52 start_update_callback_.reset( 52 start_update_callback_.reset(
53 NewCallback(this, &AppCacheDispatcherHost::StartUpdateCallback)); 53 NewCallback(this, &AppCacheDispatcherHost::StartUpdateCallback));
54 swap_cache_callback_.reset( 54 swap_cache_callback_.reset(
55 NewCallback(this, &AppCacheDispatcherHost::SwapCacheCallback)); 55 NewCallback(this, &AppCacheDispatcherHost::SwapCacheCallback));
56 } 56 }
57 } 57 }
58 58
59 bool AppCacheDispatcherHost::OnMessageReceived(const IPC::Message& message) { 59 bool AppCacheDispatcherHost::OnMessageReceived(const IPC::Message& message,
60 bool* message_was_ok) {
60 bool handled = true; 61 bool handled = true;
61 bool message_was_ok = true;
62 62
63 IPC_BEGIN_MESSAGE_MAP_EX(AppCacheDispatcherHost, message, message_was_ok) 63 IPC_BEGIN_MESSAGE_MAP_EX(AppCacheDispatcherHost, message, *message_was_ok)
64 IPC_MESSAGE_HANDLER(AppCacheMsg_RegisterHost, OnRegisterHost); 64 IPC_MESSAGE_HANDLER(AppCacheMsg_RegisterHost, OnRegisterHost);
65 IPC_MESSAGE_HANDLER(AppCacheMsg_UnregisterHost, OnUnregisterHost); 65 IPC_MESSAGE_HANDLER(AppCacheMsg_UnregisterHost, OnUnregisterHost);
66 IPC_MESSAGE_HANDLER(AppCacheMsg_GetResourceList, OnGetResourceList); 66 IPC_MESSAGE_HANDLER(AppCacheMsg_GetResourceList, OnGetResourceList);
67 IPC_MESSAGE_HANDLER(AppCacheMsg_SelectCache, OnSelectCache); 67 IPC_MESSAGE_HANDLER(AppCacheMsg_SelectCache, OnSelectCache);
68 IPC_MESSAGE_HANDLER(AppCacheMsg_SelectCacheForWorker, 68 IPC_MESSAGE_HANDLER(AppCacheMsg_SelectCacheForWorker,
69 OnSelectCacheForWorker); 69 OnSelectCacheForWorker);
70 IPC_MESSAGE_HANDLER(AppCacheMsg_SelectCacheForSharedWorker, 70 IPC_MESSAGE_HANDLER(AppCacheMsg_SelectCacheForSharedWorker,
71 OnSelectCacheForSharedWorker); 71 OnSelectCacheForSharedWorker);
72 IPC_MESSAGE_HANDLER(AppCacheMsg_MarkAsForeignEntry, OnMarkAsForeignEntry); 72 IPC_MESSAGE_HANDLER(AppCacheMsg_MarkAsForeignEntry, OnMarkAsForeignEntry);
73 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheMsg_GetStatus, OnGetStatus); 73 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheMsg_GetStatus, OnGetStatus);
74 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheMsg_StartUpdate, OnStartUpdate); 74 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheMsg_StartUpdate, OnStartUpdate);
75 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheMsg_SwapCache, OnSwapCache); 75 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheMsg_SwapCache, OnSwapCache);
76 IPC_MESSAGE_UNHANDLED(handled = false) 76 IPC_MESSAGE_UNHANDLED(handled = false)
77 IPC_END_MESSAGE_MAP_EX() 77 IPC_END_MESSAGE_MAP_EX()
78 78
79 if (!message_was_ok)
80 BadMessageReceived(message.type());
81
82 return handled; 79 return handled;
83 } 80 }
84 81
85 void AppCacheDispatcherHost::OnRegisterHost(int host_id) { 82 void AppCacheDispatcherHost::OnRegisterHost(int host_id) {
86 if (appcache_service_.get()) { 83 if (appcache_service_.get()) {
87 if (!backend_impl_.RegisterHost(host_id)) { 84 if (!backend_impl_.RegisterHost(host_id)) {
88 BadMessageReceived(AppCacheMsg_RegisterHost::ID); 85 BadMessageReceived(AppCacheMsg_RegisterHost::ID);
89 } 86 }
90 } 87 }
91 } 88 }
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
226 AppCacheMsg_StartUpdate::WriteReplyParams(reply_msg, result); 223 AppCacheMsg_StartUpdate::WriteReplyParams(reply_msg, result);
227 Send(pending_reply_msg_.release()); 224 Send(pending_reply_msg_.release());
228 } 225 }
229 226
230 void AppCacheDispatcherHost::SwapCacheCallback(bool result, void* param) { 227 void AppCacheDispatcherHost::SwapCacheCallback(bool result, void* param) {
231 IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); 228 IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param);
232 DCHECK(reply_msg == pending_reply_msg_.get()); 229 DCHECK(reply_msg == pending_reply_msg_.get());
233 AppCacheMsg_SwapCache::WriteReplyParams(reply_msg, result); 230 AppCacheMsg_SwapCache::WriteReplyParams(reply_msg, result);
234 Send(pending_reply_msg_.release()); 231 Send(pending_reply_msg_.release());
235 } 232 }
OLDNEW
« no previous file with comments | « chrome/browser/appcache/appcache_dispatcher_host.h ('k') | chrome/browser/browser_io_message_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698