1ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file. 4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 5ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#ifndef CONTENT_CHILD_APPCACHE_APPCACHE_DISPATCHER_H_ 6ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#define CONTENT_CHILD_APPCACHE_APPCACHE_DISPATCHER_H_ 7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <string> 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include <vector> 10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/memory/scoped_ptr.h" 12ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#include "content/child/appcache/appcache_backend_proxy.h" 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/common/appcache_interfaces.h" 14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ipc/ipc_listener.h" 15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace content { 17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Dispatches appcache related messages sent to a child process from the 19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// main browser process. There is one instance per child process. Messages 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// are dispatched on the main child thread. The ChildThread base class 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// creates an instance and delegates calls to it. 22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass AppCacheDispatcher : public IPC::Listener { 23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public: 24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch AppCacheDispatcher(IPC::Sender* sender, 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AppCacheFrontend* frontend); 26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual ~AppCacheDispatcher(); 27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch AppCacheBackendProxy* backend_proxy() { return &backend_proxy_; } 29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // IPC::Listener implementation 31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch virtual bool OnMessageReceived(const IPC::Message& msg) OVERRIDE; 32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private: 34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch // Ipc message handlers 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch void OnCacheSelected(int host_id, const AppCacheInfo& info); 36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnStatusChanged(const std::vector<int>& host_ids, 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AppCacheStatus status); 38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnEventRaised(const std::vector<int>& host_ids, 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AppCacheEventID event_id); 40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnProgressEventRaised(const std::vector<int>& host_ids, 41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch const GURL& url, int num_total, int num_complete); 42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnErrorEventRaised(const std::vector<int>& host_ids, 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const AppCacheErrorDetails& details); 44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnLogMessage(int host_id, int log_level, const std::string& message); 45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch void OnContentBlocked(int host_id, const GURL& manifest_url); 46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch AppCacheBackendProxy backend_proxy_; 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<AppCacheFrontend> frontend_; 49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}; 50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} // namespace content 52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 53ba5b9a6411cb1792fd21f0a078d7a25cd1ceec16Ben Murdoch#endif // CONTENT_CHILD_APPCACHE_APPCACHE_DISPATCHER_H_ 54