| 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 #ifndef PPAPI_HOST_PPAPI_HOST_H_ | 5 #ifndef PPAPI_HOST_PPAPI_HOST_H_ |
| 6 #define PPAPI_HOST_PPAPI_HOST_H_ | 6 #define PPAPI_HOST_PPAPI_HOST_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> |
| 9 | 10 |
| 10 #include "base/compiler_specific.h" | 11 #include "base/compiler_specific.h" |
| 11 #include "base/memory/linked_ptr.h" | 12 #include "base/memory/linked_ptr.h" |
| 12 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 13 #include "base/memory/scoped_vector.h" | 14 #include "base/memory/scoped_vector.h" |
| 14 #include "base/observer_list.h" | 15 #include "base/observer_list.h" |
| 15 #include "ipc/ipc_listener.h" | 16 #include "ipc/ipc_listener.h" |
| 16 #include "ipc/ipc_sender.h" | 17 #include "ipc/ipc_sender.h" |
| 17 #include "ppapi/c/pp_instance.h" | 18 #include "ppapi/c/pp_instance.h" |
| 18 #include "ppapi/c/pp_resource.h" | 19 #include "ppapi/c/pp_resource.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 const IPC::Message& msg); | 60 const IPC::Message& msg); |
| 60 | 61 |
| 61 // Adds the given host factory filter to the host. The PpapiHost will take | 62 // Adds the given host factory filter to the host. The PpapiHost will take |
| 62 // ownership of the pointer. | 63 // ownership of the pointer. |
| 63 void AddHostFactoryFilter(scoped_ptr<HostFactory> filter); | 64 void AddHostFactoryFilter(scoped_ptr<HostFactory> filter); |
| 64 | 65 |
| 65 // Adds the given message filter to the host. The PpapiHost will take | 66 // Adds the given message filter to the host. The PpapiHost will take |
| 66 // ownership of the pointer. | 67 // ownership of the pointer. |
| 67 void AddInstanceMessageFilter(scoped_ptr<InstanceMessageFilter> filter); | 68 void AddInstanceMessageFilter(scoped_ptr<InstanceMessageFilter> filter); |
| 68 | 69 |
| 70 // Returns null if the resource doesn't exist. |
| 71 host::ResourceHost* GetResourceHost(PP_Resource resource) const; |
| 72 |
| 69 private: | 73 private: |
| 70 friend class InstanceMessageFilter; | 74 friend class InstanceMessageFilter; |
| 71 | 75 |
| 72 void HandleResourceCall( | 76 void HandleResourceCall( |
| 73 const proxy::ResourceMessageCallParams& params, | 77 const proxy::ResourceMessageCallParams& params, |
| 74 const IPC::Message& nested_msg, | 78 const IPC::Message& nested_msg, |
| 75 HostMessageContext* context); | 79 HostMessageContext* context); |
| 76 | 80 |
| 77 // Message handlers. | 81 // Message handlers. |
| 78 void OnHostMsgResourceCall(const proxy::ResourceMessageCallParams& params, | 82 void OnHostMsgResourceCall(const proxy::ResourceMessageCallParams& params, |
| 79 const IPC::Message& nested_msg); | 83 const IPC::Message& nested_msg); |
| 80 void OnHostMsgResourceSyncCall( | 84 void OnHostMsgResourceSyncCall( |
| 81 const proxy::ResourceMessageCallParams& params, | 85 const proxy::ResourceMessageCallParams& params, |
| 82 const IPC::Message& nested_msg, | 86 const IPC::Message& nested_msg, |
| 83 IPC::Message* reply_msg); | 87 IPC::Message* reply_msg); |
| 84 void OnHostMsgResourceCreated(const proxy::ResourceMessageCallParams& param, | 88 void OnHostMsgResourceCreated(const proxy::ResourceMessageCallParams& param, |
| 85 PP_Instance instance, | 89 PP_Instance instance, |
| 86 const IPC::Message& nested_msg); | 90 const IPC::Message& nested_msg); |
| 87 void OnHostMsgResourceDestroyed(PP_Resource resource); | 91 void OnHostMsgResourceDestroyed(PP_Resource resource); |
| 88 | 92 |
| 89 // Returns null if the resource doesn't exist. | |
| 90 host::ResourceHost* GetResourceHost(PP_Resource resource); | |
| 91 | |
| 92 // Non-owning pointer. | 93 // Non-owning pointer. |
| 93 IPC::Sender* sender_; | 94 IPC::Sender* sender_; |
| 94 | 95 |
| 95 PpapiPermissions permissions_; | 96 PpapiPermissions permissions_; |
| 96 | 97 |
| 97 // Filters for resource creation messages. Note that since we don't support | 98 // Filters for resource creation messages. Note that since we don't support |
| 98 // deleting these dynamically we don't need to worry about modifications | 99 // deleting these dynamically we don't need to worry about modifications |
| 99 // during iteration. If we add that capability, this should be replaced with | 100 // during iteration. If we add that capability, this should be replaced with |
| 100 // an ObserverList. | 101 // an ObserverList. |
| 101 ScopedVector<HostFactory> host_factory_filters_; | 102 ScopedVector<HostFactory> host_factory_filters_; |
| 102 | 103 |
| 103 // Filters for instance messages. Note that since we don't support deleting | 104 // Filters for instance messages. Note that since we don't support deleting |
| 104 // these dynamically we don't need to worry about modifications during | 105 // these dynamically we don't need to worry about modifications during |
| 105 // iteration. If we add that capability, this should be replaced with an | 106 // iteration. If we add that capability, this should be replaced with an |
| 106 // ObserverList. | 107 // ObserverList. |
| 107 ScopedVector<InstanceMessageFilter> instance_message_filters_; | 108 ScopedVector<InstanceMessageFilter> instance_message_filters_; |
| 108 | 109 |
| 109 typedef std::map<PP_Resource, linked_ptr<ResourceHost> > ResourceMap; | 110 typedef std::map<PP_Resource, linked_ptr<ResourceHost> > ResourceMap; |
| 110 ResourceMap resources_; | 111 ResourceMap resources_; |
| 111 | 112 |
| 112 DISALLOW_COPY_AND_ASSIGN(PpapiHost); | 113 DISALLOW_COPY_AND_ASSIGN(PpapiHost); |
| 113 }; | 114 }; |
| 114 | 115 |
| 115 } // namespace host | 116 } // namespace host |
| 116 } // namespace ppapi | 117 } // namespace ppapi |
| 117 | 118 |
| 118 #endif // PPAPI_HOST_PPAPIE_HOST_H_ | 119 #endif // PPAPI_HOST_PPAPIE_HOST_H_ |
| OLD | NEW |