Chromium Code Reviews| 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_CPP_MODULE_H_ | 5 #ifndef PPAPI_CPP_MODULE_H_ |
| 6 #define PPAPI_CPP_MODULE_H_ | 6 #define PPAPI_CPP_MODULE_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 29 class Module { | 29 class Module { |
| 30 public: | 30 public: |
| 31 typedef std::map<PP_Instance, Instance*> InstanceMap; | 31 typedef std::map<PP_Instance, Instance*> InstanceMap; |
| 32 | 32 |
| 33 // You may not call any other PP functions from the constructor, put them | 33 // You may not call any other PP functions from the constructor, put them |
| 34 // in Init instead. Various things will not be set up until the constructor | 34 // in Init instead. Various things will not be set up until the constructor |
| 35 // completes. | 35 // completes. |
| 36 Module(); | 36 Module(); |
| 37 virtual ~Module(); | 37 virtual ~Module(); |
| 38 | 38 |
| 39 // Returns the global instance of this module object, or NULL if the module | 39 /// Get() returns the global instance of this module object, or NULL if the |
| 40 // is not initialized yet. | 40 /// module is not initialized yet. |
| 41 /// | |
| 42 /// @return The global instance of the module object. | |
| 41 static Module* Get(); | 43 static Module* Get(); |
| 42 | 44 |
| 43 // This function will be automatically called after the object is created. | 45 /// Init() is automatically called after the object is created. This is where |
| 44 // This is where you can put functions that rely on other parts of the API, | 46 /// you can put functions that rely on other parts of the API, now that the |
| 45 // now that the module has been created. | 47 /// module has been created. |
| 48 /// | |
| 49 /// @return True if success, otherwise false. | |
|
dmichael (off chromium)
2011/08/11 22:20:50
True->true
if->on ? (or success->successful)?
jond
2011/08/12 16:58:18
Done.
jond
2011/08/12 16:58:18
Done.
| |
| 46 virtual bool Init(); | 50 virtual bool Init(); |
| 47 | 51 |
| 48 // Returns the internal module handle. | 52 /// The <code>pp_module</code> function returns the internal module handle. |
|
dmichael (off chromium)
2011/08/11 22:20:50
Why are you using 'The <code>function_name</code>
jond
2011/08/12 16:58:18
The function name here is lowercase. So, I thought
dmichael (off chromium)
2011/08/12 19:13:55
Okay, that's fine. But it should still be pp_modul
jond
2011/08/12 19:29:24
Actually saying pp_module() function is wrong. Tha
dmichael (off chromium)
2011/08/12 19:42:29
Why? I don't read it 'function function'. All I'm
jond
2011/08/12 19:54:37
I agree. I'll have to change this in several spots
| |
| 53 /// | |
| 54 /// @return A <code>PP_Module</code> internal module handle. | |
| 49 PP_Module pp_module() const { return pp_module_; } | 55 PP_Module pp_module() const { return pp_module_; } |
| 50 | 56 |
| 51 // Returns the internal get_browser_interface pointer. | 57 /// The <code>get_browser_interface</code> the internal get_browser_interface |
|
dmichael (off chromium)
2011/08/11 22:20:50
/// get_browser_interface() returns the internal g
jond
2011/08/12 16:58:18
Done.
| |
| 52 // TODO(sehr): This should be removed once the NaCl browser plugin no longer | 58 /// pointer. |
| 53 // needs it. | 59 /// TODO(sehr): This should be removed once the NaCl browser plugin no longer |
| 60 /// needs it. | |
| 61 /// | |
| 62 /// @return A <code>PPB_GetInterface</code> internal pointer. | |
| 54 PPB_GetInterface get_browser_interface() const { | 63 PPB_GetInterface get_browser_interface() const { |
| 55 return get_browser_interface_; | 64 return get_browser_interface_; |
| 56 } | 65 } |
| 57 | 66 |
| 58 // Returns the core interface for doing basic global operations. This is | 67 /// The <code>core</code> function returns the core interface for doing basic |
|
dmichael (off chromium)
2011/08/11 22:20:50
core() returns...
jond
2011/08/12 16:58:18
See above. I will talk to Josie about this, but fo
| |
| 59 // guaranteed to be non-NULL once the module has successfully initialized | 68 /// global operations. The return value is guaranteed to be non-NULL once the |
| 60 // and during the Init() call. | 69 /// module has successfully initialized and during the Init() call. |
| 61 // | 70 /// |
| 62 // It will be NULL before Init() has been called. | 71 /// It will be NULL before Init() has been called. |
| 72 /// | |
| 73 /// @return The core interface for doing basic global operations. | |
| 63 Core* core() { return core_; } | 74 Core* core() { return core_; } |
| 64 | 75 |
| 65 // Implements GetInterface for the browser to get plugin interfaces. If you | 76 /// GetPluginInterface() implements <code>GetInterface</code> for the browser |
| 66 // need to provide your own implementations of new interfaces, you can use | 77 /// to get module interfaces. If you need to provide your own implementations |
| 67 // AddPluginInterface which this function will use. | 78 /// of new interfaces, use AddPluginInterface() which this function will use. |
| 79 /// | |
| 80 /// @param[in] interface_name The module interface for the browser to get. | |
| 68 const void* GetPluginInterface(const char* interface_name); | 81 const void* GetPluginInterface(const char* interface_name); |
| 69 | 82 |
| 70 // Returns an interface in the browser. | 83 /// GetBrowserInterface() returns an interface in the browser. |
|
dmichael (off chromium)
2011/08/11 22:20:50
I think the original wording is confusing. Maybe:
jond
2011/08/12 16:58:18
Done.
| |
| 84 /// | |
| 85 /// @param[in] interface_name The browser interface for the moduel to get. | |
| 71 const void* GetBrowserInterface(const char* interface_name); | 86 const void* GetBrowserInterface(const char* interface_name); |
| 72 | 87 |
| 73 // Returns the object associated with this PP_Instance, or NULL if one is | 88 /// InstanceForPPInstance() returns the object associated with this |
| 74 // not found. | 89 /// <code>PP_Instance</code>, or NULL if one is not found. |
| 90 /// | |
| 91 /// @param[in] instance This <code>PP_Instance</code>. | |
| 92 /// | |
| 93 /// @return The object associated with this <code>PP_Instance</code>, | |
| 94 /// or NULL if one is not found. | |
| 75 Instance* InstanceForPPInstance(PP_Instance instance); | 95 Instance* InstanceForPPInstance(PP_Instance instance); |
| 76 | 96 |
| 77 // Adds a handler for a given interface name. When the browser requests | 97 /// AddPluginInterface() adds a handler for a provided interface name. When |
| 78 // that interface name, the given |vtable| will be returned. | 98 /// the browser requests that interface name, the provided |
| 79 // | 99 /// <code>vtable</code> will be returned. |
| 80 // In general, plugins will not need to call this directly. Instead, the | 100 /// |
| 81 // C++ wrappers for each interface will register themselves with this | 101 /// In general, modules will not need to call this directly. Instead, the |
| 82 // function. | 102 /// C++ wrappers for each interface will register themselves with this |
| 83 // | 103 /// function. |
| 84 // This function may be called more than once with the same interface name | 104 /// |
| 85 // and vtable with no effect. However, it may not be used to register a | 105 /// This function may be called more than once with the same interface name |
| 86 // different vtable for an already-registered interface. It will assert for | 106 /// and vtable with no effect. However, it may not be used to register a |
| 87 // a different registration for an already-registered interface in debug | 107 /// different vtable for an already-registered interface. It will assert for |
| 88 // mode, and just ignore the registration in release mode. | 108 /// a different registration for an already-registered interface in debug |
| 109 /// mode, and just ignore the registration in release mode. | |
| 110 /// | |
| 111 /// @param[in] interface_name The interface name that will receive a handler. | |
| 112 /// @param[in,out] vtable The vtable returned for <code>interface_name</code>. | |
|
dmichael (off chromium)
2011/08/11 22:20:50
'returned'->'to return'
jond
2011/08/12 16:58:18
Done.
| |
| 89 void AddPluginInterface(const std::string& interface_name, | 113 void AddPluginInterface(const std::string& interface_name, |
| 90 const void* vtable); | 114 const void* vtable); |
| 91 | 115 |
| 92 // Sets the browser interface and calls the regular init function that | 116 // InternalInit() sets the browser interface and calls the regular init |
|
dmichael (off chromium)
2011/08/11 22:20:50
init -> Init()
jond
2011/08/12 16:58:18
Done.
| |
| 93 // can be overridden by the base classes. | 117 /// function that can be overridden by the base classes. |
| 94 // | 118 /// |
| 95 // TODO(brettw) make this private when I can figure out how to make the | 119 /// TODO(brettw) make this private when I can figure out how to make the |
| 96 // initialize function a friend. | 120 /// initialize function a friend. |
| 121 /// | |
| 122 /// @param[in] mod A <code>PP_Module</code>. | |
| 123 /// @param[in] get_browser_interface The browser interface to set. | |
| 124 /// | |
| 125 /// @return True if successful, otherwise false. | |
|
dmichael (off chromium)
2011/08/11 22:20:50
True->true
jond
2011/08/12 16:58:18
Again, I was hoping to start sentences with a capi
dmichael (off chromium)
2011/08/12 19:13:55
When case is important, my opinion is it's much be
jond
2011/08/12 19:29:24
Okay, I'll change that one.
On 2011/08/12 19:13:5
dmichael (off chromium)
2011/08/12 19:42:29
Thanks!
| |
| 97 bool InternalInit(PP_Module mod, | 126 bool InternalInit(PP_Module mod, |
| 98 PPB_GetInterface get_browser_interface); | 127 PPB_GetInterface get_browser_interface); |
| 99 | 128 |
| 100 // Allows iteration over the current instances in the module. | 129 /// The <code>current_instance</code> allows iteration over the current |
|
dmichael (off chromium)
2011/08/11 22:20:50
/// current_instances() allows...
jond
2011/08/12 16:58:18
Done.
jond
2011/08/12 16:58:18
Done.
| |
| 130 /// instances in the module. | |
| 131 /// | |
| 132 /// @return An <code>InstanceMap</code> of all instances in the module. | |
| 101 const InstanceMap& current_instances() const { return current_instances_; } | 133 const InstanceMap& current_instances() const { return current_instances_; } |
| 102 | 134 |
| 103 protected: | 135 protected: |
| 104 // Override to create your own plugin type. | 136 /// CreateInstance() should be overridden to create your own module type. |
| 137 /// | |
| 138 /// @param[in] instance A <code>PP_Instance</code>. | |
| 139 /// | |
| 140 /// @return The resulting instance. | |
| 105 virtual Instance* CreateInstance(PP_Instance instance) = 0; | 141 virtual Instance* CreateInstance(PP_Instance instance) = 0; |
| 106 | 142 |
| 107 private: | 143 private: |
| 108 friend PP_Bool Instance_DidCreate(PP_Instance pp_instance, | 144 friend PP_Bool Instance_DidCreate(PP_Instance pp_instance, |
| 109 uint32_t argc, | 145 uint32_t argc, |
| 110 const char* argn[], | 146 const char* argn[], |
| 111 const char* argv[]); | 147 const char* argv[]); |
| 112 friend void Instance_DidDestroy(PP_Instance instance); | 148 friend void Instance_DidDestroy(PP_Instance instance); |
| 113 | 149 |
| 114 // Unimplemented (disallow copy and assign). | 150 // Unimplemented (disallow copy and assign). |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 125 | 161 |
| 126 // All additional interfaces this plugin can handle as registered by | 162 // All additional interfaces this plugin can handle as registered by |
| 127 // AddPluginInterface. | 163 // AddPluginInterface. |
| 128 typedef std::map<std::string, const void*> InterfaceMap; | 164 typedef std::map<std::string, const void*> InterfaceMap; |
| 129 InterfaceMap additional_interfaces_; | 165 InterfaceMap additional_interfaces_; |
| 130 }; | 166 }; |
| 131 | 167 |
| 132 } // namespace pp | 168 } // namespace pp |
| 133 | 169 |
| 134 #endif // PPAPI_CPP_MODULE_H_ | 170 #endif // PPAPI_CPP_MODULE_H_ |
| OLD | NEW |