OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "content/browser/appcache/appcache_dispatcher_host.h" | 5 #include "content/browser/appcache/appcache_dispatcher_host.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "content/browser/appcache/appcache_executable_handler_impl.h" |
9 #include "content/browser/appcache/chrome_appcache_service.h" | 10 #include "content/browser/appcache/chrome_appcache_service.h" |
10 #include "content/common/appcache_messages.h" | 11 #include "content/common/appcache_messages.h" |
11 #include "content/public/browser/user_metrics.h" | 12 #include "content/public/browser/user_metrics.h" |
| 13 #include "webkit/browser/appcache/manifest_parser.h" |
12 | 14 |
13 namespace content { | 15 namespace content { |
14 | 16 |
15 AppCacheDispatcherHost::AppCacheDispatcherHost( | 17 AppCacheDispatcherHost::AppCacheDispatcherHost( |
16 ChromeAppCacheService* appcache_service, | 18 ChromeAppCacheService* appcache_service, |
17 int process_id) | 19 int process_id) |
18 : appcache_service_(appcache_service), | 20 : appcache_service_(appcache_service), |
19 frontend_proxy_(this), | 21 frontend_proxy_(this), |
20 process_id_(process_id) { | 22 process_id_(process_id) { |
21 } | 23 } |
(...skipping 26 matching lines...) Expand all Loading... |
48 IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCache, OnSelectCache) | 50 IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCache, OnSelectCache) |
49 IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCacheForWorker, | 51 IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCacheForWorker, |
50 OnSelectCacheForWorker) | 52 OnSelectCacheForWorker) |
51 IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCacheForSharedWorker, | 53 IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCacheForSharedWorker, |
52 OnSelectCacheForSharedWorker) | 54 OnSelectCacheForSharedWorker) |
53 IPC_MESSAGE_HANDLER(AppCacheHostMsg_MarkAsForeignEntry, | 55 IPC_MESSAGE_HANDLER(AppCacheHostMsg_MarkAsForeignEntry, |
54 OnMarkAsForeignEntry) | 56 OnMarkAsForeignEntry) |
55 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_GetStatus, OnGetStatus) | 57 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_GetStatus, OnGetStatus) |
56 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_StartUpdate, OnStartUpdate) | 58 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_StartUpdate, OnStartUpdate) |
57 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_SwapCache, OnSwapCache) | 59 IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_SwapCache, OnSwapCache) |
| 60 IPC_MESSAGE_HANDLER(AppCacheHostMsg_ExeHandlerResponse, |
| 61 OnExeHandlerResponse) |
| 62 IPC_MESSAGE_HANDLER(AppCacheHostMsg_RegisterController, OnRegisterController
) |
| 63 IPC_MESSAGE_HANDLER(AppCacheHostMsg_UnregisterController, OnUnregisterContro
ller) |
58 IPC_MESSAGE_UNHANDLED(handled = false) | 64 IPC_MESSAGE_UNHANDLED(handled = false) |
59 IPC_END_MESSAGE_MAP_EX() | 65 IPC_END_MESSAGE_MAP_EX() |
60 | 66 |
61 return handled; | 67 return handled; |
62 } | 68 } |
63 | 69 |
64 AppCacheDispatcherHost::~AppCacheDispatcherHost() {} | 70 AppCacheDispatcherHost::~AppCacheDispatcherHost() {} |
65 | 71 |
66 void AppCacheDispatcherHost::BadMessageReceived() { | 72 void AppCacheDispatcherHost::BadMessageReceived() { |
67 RecordAction(UserMetricsAction("BadMessageTerminate_ACDH")); | 73 RecordAction(UserMetricsAction("BadMessageTerminate_ACDH")); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 if (!backend_impl_.SwapCacheWithCallback( | 204 if (!backend_impl_.SwapCacheWithCallback( |
199 host_id, swap_cache_callback_, reply_msg)) { | 205 host_id, swap_cache_callback_, reply_msg)) { |
200 BadMessageReceived(); | 206 BadMessageReceived(); |
201 } | 207 } |
202 return; | 208 return; |
203 } | 209 } |
204 | 210 |
205 SwapCacheCallback(false, reply_msg); | 211 SwapCacheCallback(false, reply_msg); |
206 } | 212 } |
207 | 213 |
| 214 void AppCacheDispatcherHost::OnExeHandlerResponse( |
| 215 int request_id, |
| 216 const appcache::AppCacheExecutableHandler::Response& response) { |
| 217 AppCacheExecutableHandlerImpl::ProcessResponse(request_id, response); |
| 218 } |
| 219 |
| 220 void AppCacheDispatcherHost::OnRegisterController( |
| 221 int host_id, |
| 222 const GURL& document_url, |
| 223 const string16& pattern, |
| 224 const GURL& controller_url) { |
| 225 if (!backend_impl_.RegisterController( |
| 226 host_id, document_url, pattern, controller_url)) { |
| 227 BadMessageReceived(); |
| 228 } |
| 229 } |
| 230 |
| 231 void AppCacheDispatcherHost::OnUnregisterController( |
| 232 int host_id, |
| 233 const GURL& document_url, |
| 234 const string16& pattern) { |
| 235 if (!backend_impl_.UnregisterController(host_id, document_url, pattern)) |
| 236 BadMessageReceived(); |
| 237 } |
| 238 |
208 void AppCacheDispatcherHost::GetStatusCallback( | 239 void AppCacheDispatcherHost::GetStatusCallback( |
209 appcache::Status status, void* param) { | 240 appcache::Status status, void* param) { |
210 IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); | 241 IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); |
211 DCHECK_EQ(pending_reply_msg_.get(), reply_msg); | 242 DCHECK_EQ(pending_reply_msg_.get(), reply_msg); |
212 AppCacheHostMsg_GetStatus::WriteReplyParams(reply_msg, status); | 243 AppCacheHostMsg_GetStatus::WriteReplyParams(reply_msg, status); |
213 Send(pending_reply_msg_.release()); | 244 Send(pending_reply_msg_.release()); |
214 } | 245 } |
215 | 246 |
216 void AppCacheDispatcherHost::StartUpdateCallback(bool result, void* param) { | 247 void AppCacheDispatcherHost::StartUpdateCallback(bool result, void* param) { |
217 IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); | 248 IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); |
218 DCHECK_EQ(pending_reply_msg_.get(), reply_msg); | 249 DCHECK_EQ(pending_reply_msg_.get(), reply_msg); |
219 AppCacheHostMsg_StartUpdate::WriteReplyParams(reply_msg, result); | 250 AppCacheHostMsg_StartUpdate::WriteReplyParams(reply_msg, result); |
220 Send(pending_reply_msg_.release()); | 251 Send(pending_reply_msg_.release()); |
221 } | 252 } |
222 | 253 |
223 void AppCacheDispatcherHost::SwapCacheCallback(bool result, void* param) { | 254 void AppCacheDispatcherHost::SwapCacheCallback(bool result, void* param) { |
224 IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); | 255 IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); |
225 DCHECK_EQ(pending_reply_msg_.get(), reply_msg); | 256 DCHECK_EQ(pending_reply_msg_.get(), reply_msg); |
226 AppCacheHostMsg_SwapCache::WriteReplyParams(reply_msg, result); | 257 AppCacheHostMsg_SwapCache::WriteReplyParams(reply_msg, result); |
227 Send(pending_reply_msg_.release()); | 258 Send(pending_reply_msg_.release()); |
228 } | 259 } |
229 | 260 |
230 } // namespace content | 261 } // namespace content |
OLD | NEW |