15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/appcache/appcache_dispatcher_host.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind_helpers.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/appcache/chrome_appcache_service.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/common/appcache_messages.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/user_metrics.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AppCacheDispatcherHost::AppCacheDispatcherHost( 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ChromeAppCacheService* appcache_service, 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int process_id) 185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : BrowserMessageFilter(AppCacheMsgStart), 195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) appcache_service_(appcache_service), 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) frontend_proxy_(this), 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) process_id_(process_id) { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnChannelConnected(int32 peer_pid) { 25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) backend_impl_.Initialize( 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) appcache_service_.get(), &frontend_proxy_, process_id_); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) get_status_callback_ = 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&AppCacheDispatcherHost::GetStatusCallback, 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this)); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) start_update_callback_ = 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&AppCacheDispatcherHost::StartUpdateCallback, 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this)); 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) swap_cache_callback_ = 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Bind(&AppCacheDispatcherHost::SwapCacheCallback, 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::Unretained(this)); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)bool AppCacheDispatcherHost::OnMessageReceived(const IPC::Message& message) { 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool handled = true; 42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) IPC_BEGIN_MESSAGE_MAP(AppCacheDispatcherHost, message) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(AppCacheHostMsg_RegisterHost, OnRegisterHost) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(AppCacheHostMsg_UnregisterHost, OnUnregisterHost) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(AppCacheHostMsg_SetSpawningHostId, OnSetSpawningHostId) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(AppCacheHostMsg_GetResourceList, OnGetResourceList) 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCache, OnSelectCache) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCacheForWorker, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnSelectCacheForWorker) 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(AppCacheHostMsg_SelectCacheForSharedWorker, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnSelectCacheForSharedWorker) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(AppCacheHostMsg_MarkAsForeignEntry, 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnMarkAsForeignEntry) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_GetStatus, OnGetStatus) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_StartUpdate, OnStartUpdate) 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER_DELAY_REPLY(AppCacheHostMsg_SwapCache, OnSwapCache) 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_UNHANDLED(handled = false) 58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) IPC_END_MESSAGE_MAP() 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return handled; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AppCacheDispatcherHost::~AppCacheDispatcherHost() {} 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::BadMessageReceived() { 665d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) RecordAction(base::UserMetricsAction("BadMessageTerminate_ACDH")); 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BrowserMessageFilter::BadMessageReceived(); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnRegisterHost(int host_id) { 71868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!backend_impl_.RegisterHost(host_id)) { 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnUnregisterHost(int host_id) { 79868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!backend_impl_.UnregisterHost(host_id)) { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnSetSpawningHostId( 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int host_id, int spawning_host_id) { 88868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!backend_impl_.SetSpawningHostId(host_id, spawning_host_id)) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnSelectCache( 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int host_id, const GURL& document_url, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 cache_document_was_loaded_from, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const GURL& opt_manifest_url) { 98868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 99868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!backend_impl_.SelectCache(host_id, 100868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) document_url, 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cache_document_was_loaded_from, 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) opt_manifest_url)) { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 106116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch frontend_proxy_.OnCacheSelected(host_id, AppCacheInfo()); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnSelectCacheForWorker( 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int host_id, int parent_process_id, int parent_host_id) { 112868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!backend_impl_.SelectCacheForWorker( 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) host_id, parent_process_id, parent_host_id)) { 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 118116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch frontend_proxy_.OnCacheSelected(host_id, AppCacheInfo()); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnSelectCacheForSharedWorker( 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int host_id, int64 appcache_id) { 124868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!backend_impl_.SelectCacheForSharedWorker(host_id, appcache_id)) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 128116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch frontend_proxy_.OnCacheSelected(host_id, AppCacheInfo()); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnMarkAsForeignEntry( 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int host_id, const GURL& document_url, 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int64 cache_document_was_loaded_from) { 135868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 136868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!backend_impl_.MarkAsForeignEntry( 137868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) host_id, document_url, cache_document_was_loaded_from)) { 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnGetResourceList( 144116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int host_id, std::vector<AppCacheResourceInfo>* params) { 145868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) backend_impl_.GetResourceList(host_id, params); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnGetStatus(int host_id, IPC::Message* reply_msg) { 150c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (pending_reply_msg_) { 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete reply_msg; 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pending_reply_msg_.reset(reply_msg); 157868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 158868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!backend_impl_.GetStatusWithCallback( 159868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) host_id, get_status_callback_, reply_msg)) { 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch GetStatusCallback(APPCACHE_STATUS_UNCACHED, reply_msg); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnStartUpdate(int host_id, 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC::Message* reply_msg) { 170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (pending_reply_msg_) { 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete reply_msg; 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pending_reply_msg_.reset(reply_msg); 177868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 178868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!backend_impl_.StartUpdateWithCallback( 179868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) host_id, start_update_callback_, reply_msg)) { 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StartUpdateCallback(false, reply_msg); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::OnSwapCache(int host_id, IPC::Message* reply_msg) { 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (pending_reply_msg_) { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) delete reply_msg; 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) pending_reply_msg_.reset(reply_msg); 196868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (appcache_service_.get()) { 197868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!backend_impl_.SwapCacheWithCallback( 198868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) host_id, swap_cache_callback_, reply_msg)) { 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) BadMessageReceived(); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SwapCacheCallback(false, reply_msg); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::GetStatusCallback( 208116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AppCacheStatus status, void* param) { 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(pending_reply_msg_.get(), reply_msg); 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppCacheHostMsg_GetStatus::WriteReplyParams(reply_msg, status); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Send(pending_reply_msg_.release()); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::StartUpdateCallback(bool result, void* param) { 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(pending_reply_msg_.get(), reply_msg); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppCacheHostMsg_StartUpdate::WriteReplyParams(reply_msg, result); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Send(pending_reply_msg_.release()); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AppCacheDispatcherHost::SwapCacheCallback(bool result, void* param) { 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC::Message* reply_msg = reinterpret_cast<IPC::Message*>(param); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK_EQ(pending_reply_msg_.get(), reply_msg); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AppCacheHostMsg_SwapCache::WriteReplyParams(reply_msg, result); 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Send(pending_reply_msg_.release()); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 230