Explanation of Passive/Active Methods

Because caja-python is an interface to a Caja' extension interface rather than a true library, it is rather quirky in how it works. One example of this is that several providers have additional public methods that an extension actively calls, rather than the extension defining and the method in their class that is called by Caja. You can see this with the Caja.menu_provider_emit_items_updated_signal and Caja.info_provider_update_complete_invoke methods, which the extension actively calls, passing the provider instance as a parameter.

Due to this confusion, I have termed these actively-called methods Active Methods and the methods called by Caja are termed Passive Methods.