| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_PROXY_PLUGIN_DISPATCHER_H_ | 5 #ifndef PPAPI_PROXY_PLUGIN_DISPATCHER_H_ |
| 6 #define PPAPI_PROXY_PLUGIN_DISPATCHER_H_ | 6 #define PPAPI_PROXY_PLUGIN_DISPATCHER_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 // The plugin side maintains a mapping from PP_Instance to Dispatcher so | 81 // The plugin side maintains a mapping from PP_Instance to Dispatcher so |
| 82 // that we can send the messages to the right channel if there are multiple | 82 // that we can send the messages to the right channel if there are multiple |
| 83 // renderers sharing the same plugin. This mapping is maintained by | 83 // renderers sharing the same plugin. This mapping is maintained by |
| 84 // DidCreateInstance/DidDestroyInstance. | 84 // DidCreateInstance/DidDestroyInstance. |
| 85 static PluginDispatcher* GetForInstance(PP_Instance instance); | 85 static PluginDispatcher* GetForInstance(PP_Instance instance); |
| 86 | 86 |
| 87 // Same as GetForInstance but retrieves the instance from the given resource | 87 // Same as GetForInstance but retrieves the instance from the given resource |
| 88 // object as a convenience. Returns NULL on failure. | 88 // object as a convenience. Returns NULL on failure. |
| 89 static PluginDispatcher* GetForResource(const Resource* resource); | 89 static PluginDispatcher* GetForResource(const Resource* resource); |
| 90 | 90 |
| 91 // Implements the GetInterface function for the plugin to call to retrieve | 91 static const void* GetInterfaceFromDispatcher( |
| 92 // a browser interface. | 92 const char* dispatcher_interface); |
| 93 static const void* GetBrowserInterface(const char* interface); | |
| 94 | |
| 95 const void* GetPluginInterface(const std::string& interface_name); | |
| 96 | 93 |
| 97 // You must call this function before anything else. Returns true on success. | 94 // You must call this function before anything else. Returns true on success. |
| 98 // The delegate pointer must outlive this class, ownership is not | 95 // The delegate pointer must outlive this class, ownership is not |
| 99 // transferred. | 96 // transferred. |
| 100 bool InitPluginWithChannel(PluginDelegate* delegate, | 97 bool InitPluginWithChannel(PluginDelegate* delegate, |
| 101 const IPC::ChannelHandle& channel_handle, | 98 const IPC::ChannelHandle& channel_handle, |
| 102 bool is_client); | 99 bool is_client); |
| 103 | 100 |
| 104 // Dispatcher overrides. | 101 // Dispatcher overrides. |
| 105 virtual bool IsPlugin() const; | 102 virtual bool IsPlugin() const; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 // Notifies all live instances that they're now closed. This is used when | 142 // Notifies all live instances that they're now closed. This is used when |
| 146 // a renderer crashes or some other error is received. | 143 // a renderer crashes or some other error is received. |
| 147 void ForceFreeAllInstances(); | 144 void ForceFreeAllInstances(); |
| 148 | 145 |
| 149 // IPC message handlers. | 146 // IPC message handlers. |
| 150 void OnMsgSupportsInterface(const std::string& interface_name, bool* result); | 147 void OnMsgSupportsInterface(const std::string& interface_name, bool* result); |
| 151 void OnMsgSetPreferences(const Preferences& prefs); | 148 void OnMsgSetPreferences(const Preferences& prefs); |
| 152 | 149 |
| 153 PluginDelegate* plugin_delegate_; | 150 PluginDelegate* plugin_delegate_; |
| 154 | 151 |
| 155 // Contains all the plugin interfaces we've queried. The mapped value will | 152 // All target proxies currently created. These are ones that receive |
| 156 // be the pointer to the interface pointer supplied by the plugin if it's | 153 // messages. |
| 157 // supported, or NULL if it's not supported. This allows us to cache failures | 154 scoped_ptr<InterfaceProxy> target_proxies_[INTERFACE_ID_COUNT]; |
| 158 // and not req-query if a plugin doesn't support the interface. | 155 |
| 159 typedef base::hash_map<std::string, const void*> InterfaceMap; | 156 // Function proxies created for "new-style" FunctionGroups. |
| 160 InterfaceMap plugin_interfaces_; | 157 // TODO(brettw) this is in progress. It should be merged with the target |
| 158 // proxies so there is one list to consult. |
| 159 scoped_ptr<FunctionGroupBase> function_proxies_[INTERFACE_ID_COUNT]; |
| 161 | 160 |
| 162 typedef base::hash_map<PP_Instance, InstanceData> InstanceDataMap; | 161 typedef base::hash_map<PP_Instance, InstanceData> InstanceDataMap; |
| 163 InstanceDataMap instance_map_; | 162 InstanceDataMap instance_map_; |
| 164 | 163 |
| 165 // The preferences sent from the host. We only want to set this once, which | 164 // The preferences sent from the host. We only want to set this once, which |
| 166 // is what the received_preferences_ indicates. See OnMsgSetPreferences. | 165 // is what the received_preferences_ indicates. See OnMsgSetPreferences. |
| 167 bool received_preferences_; | 166 bool received_preferences_; |
| 168 Preferences preferences_; | 167 Preferences preferences_; |
| 169 | 168 |
| 170 uint32 plugin_dispatcher_id_; | 169 uint32 plugin_dispatcher_id_; |
| 171 | 170 |
| 172 DISALLOW_COPY_AND_ASSIGN(PluginDispatcher); | 171 DISALLOW_COPY_AND_ASSIGN(PluginDispatcher); |
| 173 }; | 172 }; |
| 174 | 173 |
| 175 } // namespace proxy | 174 } // namespace proxy |
| 176 } // namespace ppapi | 175 } // namespace ppapi |
| 177 | 176 |
| 178 #endif // PPAPI_PROXY_PLUGIN_DISPATCHER_H_ | 177 #endif // PPAPI_PROXY_PLUGIN_DISPATCHER_H_ |
| OLD | NEW |