mozilla
Your Search Results

    Using components

    This article is in need of a technical review.

    XPConnect works transparently in Mozilla and xpcshell to give you access to XPCOM components.

    Commonly, we start our scripts like so:

    var Cc = Components.classes;
    var Ci = Components.interfaces;
    

    If we want to get a hold of a component, we then do something like:

    var rc = Cc["@mozilla.org/registry;1"];
    var rs = rc.getService(Ci.nsIRegistry);
    

    See also:

    • xpcshell -- how to get a command line interface to JavaScript

    More Info

    As was already stated, it is common to start addon scripts like:

    var Cc = Components.classes;
    var Ci = Components.interfaces;
    

    There is also another way to start, which is exactly equivalent to the above.

    var {Cc: classes, Ci: interfaces} = Components;
    

    There are many more than just classes and interfaces.

    var {
        Cu: utils,
        Ci: interfaces,
        Cc: classes,
        Cr: results,
        Cs: stack,
        Cm: manager,
        Ce: Exception,
    } = Components;
    

    Here is a full breakdown of what is contained in Components. Any of the below can be accessed by Components.BLAH (IE: Components.isSuccessCode)

    utils=[object nsXPCComponents_Utils]
    interfaces=[object nsXPCComponents_Interfaces]
    classes=[object nsXPCComponents_Classes]
    results=[object nsXPCComponents_Results]
    isSuccessCode=function isSuccessCode() {
    [native code]
    }
    Constructor=[object nsXPCComponents_Constructor]
    QueryInterface=function QueryInterface() {
    [native code]
    }
    interfacesByID=[object nsXPCComponents_InterfacesByID]
    classesByID=[object nsXPCComponents_ClassesByID]
    stack=JS frame :: Scratchpad/4 :: cDump :: line 8
    manager=[xpconnect wrapped nsIComponentManager]
    ID=[object nsXPCComponents_ID]
    Exception=[object nsXPCComponents_Exception]
    reportError=function reportError() {
    [native code]
    }
    canCreateWrapper=function canCreateWrapper() {
    [native code]
    }
    canCallMethod=function canCallMethod() {
    [native code]
    }
    canGetProperty=function canGetProperty() {
    [native code]
    }
    canSetProperty=function canSetProperty() {
    [native code]
    }
    

    Document Tags and Contributors

    Last updated by: Sheppy,